使用Ruby查找包含哈希表中某些字符的键

时间:2016-01-21 09:30:56

标签: ruby-on-rails ruby hashtable

我的哈希是这样的:

hash = { "key1-one" => 3, "key1-two" => 6, "key2-one" => 5, "key2-two" => 9 }

现在我想查找带有以key1开头的键的值,无论后面是什么。我已经尝试了has_key?,但它似乎无法奏效。我知道我可以使用正则表达式但是已经有一个内置的Ruby方法了吗?

3 个答案:

答案 0 :(得分:2)

hash.select{ |key, _| key.start_with?("key1") }.values

答案 1 :(得分:1)

我相信你的hash会是这样的:

hash = { "key1-one"=>3, :"key1-two"=>6, "key2-one"=>5, "key2-two"=> 9 }

试试这个:

hash.select { |k, _v| k.to_s.include? "key1" }.values

答案 2 :(得分:0)

无需创建新哈希来提取所需的值:

hash.values_at *hash.keys.select { |k| k.start_with? 'key1' }
  #=> [3, 6]

当然可以在块中使用正则表达式:

{ |k| k =~ /^key1/ }