我有以下哈希:
hash = {
"Jason_1" => 2,
"Jason_2" => 3,
"Allison" => 1,
"Jason_3" => 1,
"Michelle" => 1
}
如何获取以" Jason"开头的密钥值?任何人都可以帮助我吗?
答案 0 :(得分:2)
以下是单行:
# returns a hash with the elements
hash.select { |e| e.start_with? 'Jason' }
# if you want only keys
hash.select { |e| e.start_with? 'Jason' }.keys
# if you want only values
hash.select { |e| e.start_with? 'Jason' }.values
答案 1 :(得分:2)
另一种方式:
hash.map { |key, value| key =~ /\AJason/ && value }.compact
答案 2 :(得分:1)
regexp的另一种方式:
hash.select { |x| x =~ /^Jason/ }.values
答案 3 :(得分:1)
使用scan和find_all方法的另一种方法:
Hash[hash.find_all { |key, val| not key.scan(/^Jason/).empty? }]
如果您在rails中工作,这也应该可以正常工作:
hash.slice(*hash.keys.grep(/^Jason/))
答案 4 :(得分:1)
您可以通过有效的方式在一行中完成此任务:
hash.select{|s,v| s =~ /^Jason_/}