2015-01-20 36 views
0

對於字符串中的所有元音,我試圖打印元音的數量。如果我將元音的每個實例都推送到一個新的數組中,那麼數組+1的長度就是答案。我不知道我的推動是否失敗。任何幫助,將不勝感激。檢查單個數組中的所有值是否存在於字符串中

def count_vowels(string) 
    arr = ['a', 'e', 'i', 'o', 'u'] 
    letters = string.split("") 
    letters.each do |x| 
    if x == arr.any? 
     vowels = vowels.push(x) 
     print vowels.length 
    else 
     print 0 
    end 
end 

回答

1

問題是與arr.any?它不會做你認爲它的作用。

按照單證:

傳遞到給定的塊集合中的每個元素。如果塊永遠返回比虛假或零

相反以外的值 方法返回true,要使用if arr.include? x

+0

感謝您的時間和幫助。欣賞迴應。 – 2015-01-20 22:59:22

+0

如果您發現此答案有幫助,請考慮接受它,或接受@daremkd的答案 – vincentleest 2015-01-21 16:57:10

3

一旦你更熟悉Ruby中,你會發現有更多的有用的方法不是「每個」的東西,你要完成,像串計數元音。例如像:

my_string = 'Hey there' 

def how_many_vowels_has(this_string) 
    this_string.scan(/[aeiou]/).size 
end 

p how_many_vowels_has(my_string) #=> 3 

,或者您可以撥打字符串本身字符串#計數:

my_string = 'Hey there' 
p my_string.count('aeiou') #=> 3 

從我所看到的,你需要花更多的時間來學習如何可枚舉的作品,範圍和Ruby中的所有東西都是一個對象。此外,解決問題的「紅寶石」的方式,使用該語言爲您提供的結構。

+1

對字符串中的計數元音更多有用的方法說起來,這是我們所擁有的[String#count](http://www.ruby-doc.org/core-2.2.0/String.html#method-i-count)for:'this_string.count('aeiou')#=> 3' – 2015-01-20 22:52:51

+0

編輯我的答案也加上這個,謝謝@Jordan – daremkd 2015-01-20 22:57:49

+0

其實,這應該是'this_string.downcase.count('aeiou')'或'this_string.count('AaEiIiOoUu')'。我的錯。 – 2015-01-20 22:58:28

相關問題