2017-02-28 58 views
1

當我使用.match和.eql?對於字符串比較,他們給了不同的結果ruby​​字符串比較.match vs .eql?

text_from_page = "wrong length (should be 64 characters)" 
error_text = "wrong length (should be 64 characters)" 
if(text_from_page.eql? error_text) 
puts 'matched' 
else 
    puts 'Not matched' 
end 

下面的比較沒有工作

if(text_from_page.match error_text) 
puts 'matched' 
else 
    puts 'Not matched' 
end 

有誰知道這樣做的原因是什麼?

回答

3

一如既往,不要在沒有閱讀文檔的情況下使用方法。可以有重要的筆記。

這裏的eql?

兩個字符串相等如果他們有相同的長度和內容。

這裏的match

轉換圖案的正則表達式(如果它尚未之一),然後調用STR其匹配方法。如果第二個參數存在,它指定字符串中開始搜索的位置。

請注意關於轉換的部分。在其他字符中,正則表達式()具有重要意義。你不能在這裏任意使用match。它有一個非常具體的功能。

你很少看到實際的Ruby代碼使用.eql?,約定很簡單:

text_from_page == error_text 

eql?方法主要用於內部使用。它在進行比較時以及在像容器或哈希這樣的容器中查找東西時發揮作用。

0

@tadman。謝謝。這解決了我的問題。 「.match」比較「.eql」比較刺激的散列值。