У меня есть несколько слов: hello, poison, world, search, echo ...
И у меня есть несколько букв e, h, o
Теперь мне нужно найти все слова, которые включают эти буквы.Как и search, echo
для e, h, o
Я могу искать следующим образом:
words = %w[hello poison world search echo]
matched = words.select do |w|
%w[e,h,o].all?{ |l| w =~ /#{l}/ }
end
Проблема в том, что если буквы o, o, o
или l, b, l
, этот поиск вернет true длятакие слова, как open
или boil
, но мне нужно искать слова, которые включают три из o
или два из l
и одно b
upd:
leters = "abc"
words.select{ |w| w.count(letters) >= 3 }
upd 2
Плохое решение, пример:
"lllllll".count("lua") #=> 5