ruby - 检查字符串是否包含散列中的任何键并返回它包含的键的值

标签 ruby string hash

我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。

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 中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?

例如,对于上面的hs的例子,输出应该是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/

相关文章:

ruby-on-rails - has_many 关联中的未定义方法错误

java - 删除元音的循环,如果第一个循环小于 10,则添加新循环

c - strrev 函数在字符串数组的第一个元素中插入一个换行符

比较 c 中的哈希值

algorithm - 为什么哈希表的大小 127(素数)比 128 好?

c++ - 散列指针作为 C++ STL 中 unordered_map 的键

ruby - 将正整数转换为负整数

ruby net-ssh 登录 shell

ruby - 检查 Ruby Gem 的可用性

python - 为什么 python 字符串和元组是不可变的?