如何检查字符是否恰好出现在字符串中一次或多次?

时间:2013-12-20 15:44:06

标签: ruby

所以说我有三个字符串。我试图检查两个字母是否在“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,所以没关系。

我还在上面的方法中添加了&& ...部分。我意识到没有“曾经”的方法,但如果有类似的东西,我想用它。

1 个答案:

答案 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'出现在字符串中(无论多久)。