我想检查此数组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
答案 0 :(得分:21)
你的解决方案很有效率,它不像Ruby允许的那样富有表现力。 Ruby提供了Enumerable#any?
方法来表达你在循环中所做的事情:
words.any? { |word| sentence.include?(word) }
答案 1 :(得分:5)
另一种选择是使用正则表达式:
if Regexp.union(words) =~ sentence
# ...
end