Ruby:匹配哈希中的键以返回相应的键+值

时间:2013-02-11 14:45:41

标签: ruby hash

我有哈希

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。但是没那么有帮助。我不确定在这里使用什么。

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:6)

我会使用类似的东西:

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"}