我的哈希是这样的:
hash = { "key1-one" => 3, "key1-two" => 6, "key2-one" => 5, "key2-two" => 9 }
现在我想查找带有以key1
开头的键的值,无论后面是什么。我已经尝试了has_key?
,但它似乎无法奏效。我知道我可以使用正则表达式但是已经有一个内置的Ruby方法了吗?
答案 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/ }