我有这样的哈希:
hash = {2013 => 'one', 2014 => 'two'}
和变量number
:
number = 13
我需要搜索所有哈希密钥,如果密钥中包含number
,我需要返回该密钥。现在我有这个:
if hash.keys.any? {|k| k.include? number}
#do some work
end
虽然有效,但我确实需要在k
确实包含k
的情况下返回number
,而不仅仅是检查它。我怎样才能以上述“if”格式轻松写出来。
答案 0 :(得分:3)
使用find
:
if result = hash.keys.find {|k| k.include? number}
#do some work
end
答案 1 :(得分:1)
if kv = hash.find { |k,v| k.to_s[number.to_s] }
# do some work
end
例如,如果number = 13
,则块中的kv == [ 2013, "one" ]
。如果找不到,则kv
为nil
,并跳过该块。
答案 2 :(得分:1)
您希望将两个值都转换为字符串,然后检查一个字符串是否包含另一个字符串。像这样:
hash.keys.select {|key| key.to_s.include? number.to_s }