检查字符串是否包含数组中的任何子字符串

时间:2014-04-27 05:10:44

标签: ruby

我想检查此数组words = ["foo", "bar", "spooky", "rick james"]中的任何元素是否为短语sentence = "something spooky this way comes"的子字符串。

如果有匹配则返回true,否则返回false。

我目前的解决方案(工作但可能效率低下,我还在学习Ruby):

is_there_a_substring = false
words.each do |word|
  if sentence.includes?(word)
    is_there_a_substring = true
    break
  end
end
return is_there_a_substring

2 个答案:

答案 0 :(得分:21)

你的解决方案很有效率,它不像Ruby允许的那样富有表现力。 Ruby提供了Enumerable#any?方法来表达你在循环中所做的事情:

words.any? { |word| sentence.include?(word) }

答案 1 :(得分:5)

另一种选择是使用正则表达式:

 if Regexp.union(words) =~ sentence
   # ...
 end