我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。
h = {"k1"=>"v1", "k2"=>"v2", "k3"=>"v3"}
s = "this is an example string that might occur with a key somewhere in the string k1(with special characters like (^&*$#@!^&&*))"
检查 s
是否包含 h
中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?
例如,对于上面的h
和s
的例子,输出应该是v1
。
编辑:只有字符串是用户定义的。哈希将始终相同。
最佳答案
我发现这种方式可读:
hash_key_in_s = s[Regexp.union(h.keys)]
p h[hash_key_in_s] #=> "v1"
或者在一行中:
p h.fetch s[Regexp.union(h.keys)] #=> "v1"
这是一个不使用正则表达式的版本:
p h.fetch( h.keys.find{|key|s[key]} ) #=> "v1"
关于ruby - 检查字符串是否包含散列中的任何键并返回它包含的键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29762893/