简体   繁体   中英

Check if a string contains any substrings from an array

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM