我已经得到了一些字: 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
这个搜索将像open
或boil
话返回true,但我需要搜索词包括的o
三个或两个的l
和一个b
UPD:
leters = "abc"
words.select{ |w| w.count(letters) >= 3 }
UPD 2
坏的解决方案,例如:
"lllllll".count("lua") #=> 5
多少个字如果要在一个良好的性能?整个字典,该解决方案将是不同的。 – 2010-12-20 14:06:55
多大的文字吗?而且你会需要对其运行几个3个字母集? – 2010-12-20 14:07:03
约500-1000字(它是数组,acctually),而我也跑几设置(每次20-30) – fl00r 2010-12-20 14:20:12