2015-01-20 37 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

相关问题