Ruby计算字符串中找到的关键字的数量

时间:2011-10-17 11:30:52

标签: ruby

我有一个包含关键字的数组,我有一个字符串,可能包含这些关键字。我现在需要知道给定字符串中有多少个关键字:

keywords = [ 'text' ,'keywords' ,'contains' ,'blue', '42']
text = 'This text is not long but it contains 3 keywords'

我现在如何用ruby命令找出我的数组中有多少字符串在文本中(本例中为三个)?我当然可以为每个循环使用a,但我几乎可以肯定有更简洁的方法来实现这一点。

感谢您的帮助

更新:最好是解决方案不应该依赖于空格。所以空格可以用任意字符代替。

更新2 :该命令应该查找唯一的事件。

2 个答案:

答案 0 :(得分:7)

这是一种方法:

text.scan(/#{keywords.join('|')}/).length

请注意,仅当关键字数组仅包含字母数字字符时,这才是安全的。

答案 1 :(得分:5)

不完全是你想要的但是

irb(main):012:0> text.split(' ')
=> ["This", "text", "is", "not", "long", "but", "it", "contains", "3", "keywords"]
irb(main):013:0> text.split(' ') & keywords
=> ["text", "contains", "keywords"]

会给你一个匹配的数组