2013-12-20 26 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

相關問題