所以说我有三个字符串。我试图检查两个字母是否在“doopdedoo”中显示为完全一致,如果三个字母出现无限次数。
one = "doopdedoo"
two = "dp"
three = "o"
if one.{|a| a.chars.all? {|c| "#{three}".include?(c)}} && one.{|a| a.chars.once? {|c| "#{two}".include?(c)}}
我已使用上述方法测试是否存在无限量的o。如何测试有限数量的d和p?
编辑:
很抱歉,但我需要澄清一下。我的预期输出对于这种情况没有任何意义。
[]
因为doopdeedoo包含多个d或p的实例。
它包含很多o,所以没关系。
我还在上面的方法中添加了&& ...部分。我意识到没有“曾经”的方法,但如果有类似的东西,我想用它。
答案 0 :(得分:1)
您可以使用String#count
方法,如下所示:
test_string = "foopaad"
must_appear_once = ['d', 'p']
must_appear = ['o']
must_appear_once.all? {|c| test_string.count(c) == 1} \
and must_appear.all? {|c| test_string.count(c) > 0}
这可以确保'd'
和'p'
每次都显得非常出现,'o'
出现在字符串中(无论多久)。