I want to check if any elements in this array words = ["foo", "bar", "spooky", "rick james"]
are substrings of the phrase sentence = "something spooky this way comes"
.
Return true if there is any match, false if not.
My current solution (works but probably inefficient, I'm still learning 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
Your solution is efficient, it's just not as expressive as Ruby allows you to be. Ruby provides the Enumerable#any?
method to express what you are doing with that loop:
words.any? { |word| sentence.include?(word) }
Another option is to use a regular expression:
if Regexp.union(words) =~ sentence
# ...
end
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.