Ruby - 哈希中的匹配短语

时间:2012-01-04 04:52:52

标签: ruby

需要以某种方式匹配与哈希相比的短语并获取id:

哈希:

h = [{'id' => '1', 'words' => 'blue table stand'}, {'id' => '2', 'words' => 'red table stand'}]

词语:

search = 'stand blue'

我想返回那些带有'stand'和'blue'字样的ID,以便我找回id号码1.谢谢。

1 个答案:

答案 0 :(得分:2)

我同意@sawa的说法,数据似乎并不是以最舒适的方式形成的,但你永远不知道它来自哪里......

无论如何,这应该有效:

search = "blue stand"
h.select{|x| search.split.all?{|s| x["words"].split.include? s } }.map{|x| x["id"] }

=> ["2"]

从下面的评论中,使用字符串上的[]访问器会缩短它,我讨厌滚动条足以更新它:

h.select{|x| search.split.all?{|s| x["words"][s] } }.map{|x| x["id"] }