2013-02-11 66 views
2

我有哈希是紅寶石:在哈希匹配關鍵字返回各自的鍵+值

hash = {"stars"=>"in the galaxy", "fin"=>"is for fish", "fish"=>"has fins"} 

現在我有一個find方法

def find(value) 
    if hash.empty? == true 
     return {} 
    else 
    return hash 
    end 
    end 

現在運行時,我想要做的是 - find("fi"),我想要該方法返回密鑰中包含fi的所有散列鍵+值。因此,看起來像這樣的輸出 -

{"fin"=>"is for fish", "fish"=>"has fins"} 

請注意「fi」不是固定的。它可以是任何東西。由於Find方法接受參數value

任何幫助或建議表示感謝。我嘗試了hash#select。但沒有如此有用。我不確定在這裏使用什麼。

回答

5

hash.select {|k, _| k.include? str}其中str是您正在查找的字符串。

+0

寮步..我不知道它看起來的所有匹配的情況。非常感謝 :)。 – 2013-02-11 14:51:03

4

我會使用類似:

hash = {"stars"=>"in the galaxy", "fin"=>"is for fish", "fish"=>"has fins"} 
pattern = 'fi' 
hash.select{ |k,v| k[pattern] } 
# => {"fin"=>"is for fish", "fish"=>"has fins"} 
+0

不知道你可以使用這樣的模式... 你也可以添加它像pattern =/fi/ 或hash.select {| k,v | K [/圖案/]} – 2013-11-11 07:52:46