我有一个包含关键字的数组,我有一个字符串,可能包含这些关键字。我现在需要知道给定字符串中有多少个关键字:
keywords = [ 'text' ,'keywords' ,'contains' ,'blue', '42']
text = 'This text is not long but it contains 3 keywords'
我现在如何用ruby命令找出我的数组中有多少字符串在文本中(本例中为三个)?我当然可以为每个循环使用a,但我几乎可以肯定有更简洁的方法来实现这一点。
感谢您的帮助
更新:最好是解决方案不应该依赖于空格。所以空格可以用任意字符代替。
更新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"]
会给你一个匹配的数组