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

Bes*_*esi 2 ruby

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

keywords = [ 'text' ,'keywords' ,'contains' ,'blue', '42']
text = 'This text is not long but it contains 3 keywords'
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助

更新:优选地,解决方案不应该依赖于空间.所以空格可以用任意字符代替.

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

Ell*_*son 7

这是一种方法:

text.scan(/#{keywords.join('|')}/).length
Run Code Online (Sandbox Code Playgroud)

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

  • 我要补充一点,你没有提到你是否只需要至少出现一次关键字,或者字符串中的关键字总数.您可以通过在扫描后调用_.uniq.length_来获取前者. (2认同)

Boh*_*dan 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"]
Run Code Online (Sandbox Code Playgroud)

会给你一个匹配的数组