对于字符串中的所有元音,我都试图打印元音的数量。如果我将元音的每个实例推送到一个新数组,那么数组+ 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
答案 0 :(得分: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
或者你可以在字符串本身上调用String#count:
my_string = 'Hey there'
p my_string.count('aeiou') #=> 3
从我所看到的,您需要花更多的时间来了解Enumerable的工作原理,范围以及Ruby中的所有内容都是对象的事实。此外,解决问题" Ruby"使用语言为你提供的结构。
答案 1 :(得分:1)
问题出在arr.any?
上,它没有按照你的想法做到。
根据文件:
将集合的每个元素传递给给定的块。方法 如果块返回false或nil
以外的值,则返回true
相反,您想使用if arr.include? x