2013-12-20 23 views
-1

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

我已经使用上述测试邻的无限量的存在。如何测试数量有限的D和P?

编辑:

对不起,但我需要澄清。对于这种情况,我的预期产出将毫无用处。

[] 

因为doopdeedoo包含d或p的多个实例。

它确实包含很多o,所以没关系。

我还在上面的方法中添加了& & ...部分。我意识到没有“一次”方法,但如果有这样的事情,我想使用它。

+2

有**是[一个?](http://ruby-doc.org/core-2.0.0/Enumerable.html#method-i-one-3F)方法。 – steenslag

+0

该代码甚至不是有效的ruby - 它会导致语法错误。 –

回答

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'每出现一次exacly和'o'出现的字符串(不管多久)。

+0

我自己不明白的问题.. :(什么是OP寻找.. –

+0

我想他想知道某些字符出现在一个字符串中的频率和测试。 – tessi

+0

查看编辑 - 不是我一直在寻找,谢谢:) – user3116998

相关问题