【发布时间】:2018-04-30 19:06:37
【问题描述】:
我的目标是返回给定字符串中元音的数量。我试过这段代码:
def count_vowels(string)
vowels = ['a', 'e', 'i', 'o', 'u']
chars_ary = string.split(//)
ary_with_vowels = chars_ary.take_while {|letter| vowels.include?(letter)}
return ary_with_vowels.length
end
它没有通过大多数测试用例。我知道有多种其他方法可以解决此问题,但我想使用我提供的代码来解决它。
有人可以告诉我为什么这不起作用吗?
【问题讨论】:
-
对哪个测试用例不起作用?
-
在字符串不以'a'开头并且只有'a'作为元音的测试用例失败,因为一旦条件返回false,迭代就会中断。 @meagar 解释得最好,我使用了错误的方法。
-
您也没有处理带有大写元音的字符串。你应该这样做
chars_ary = string.downcase.split(//) -
你知道
String#count吗?即string.count('aeiou') -
我想你可以写
string.scan(/[aeiou]/i).size。