当我在字符串上测试这个程序时,输出为0.我认为我的逻辑是合理的,它只是一个小的语法。有人看到问题吗?
def VowelCount(string)
string.downcase
i = 0
vowels = 0
until i == string.length-1
if (string[i] == "a" || string[i] == "o" || string[i] == "e" || string[i] == "i" || string[i] == "u")
vowels += 1
end
i += 1
end
return vowels
end
答案 0 :(得分:5)
您可以使用String#count:
str = "It was the best of times, it was the worst of times,..."
str.downcase.count('aeiou') #=> 14
答案 1 :(得分:3)
以下一行
until i == string.length-1
应该是:
until i == string.length
否则,不检查最后一个字符。
顺便说一下,通过对流,方法名称以小写字母开头,并与下划线结合使用。这是使用正则表达式的替代解决方案。def vowel_count(string)
string.scan(/[aeiou]/i).length
end
<强>更新强>
正如JesseSielaff所指出的,String#downcase不会改变字符串。您需要返回方法的返回值或使用String.downcase!