检查单个数组中的所有值是否都存在于字符串中

时间:2015-01-20 22:45:03

标签: ruby arrays string

对于字符串中的所有元音,我都试图打印元音的数量。如果我将元音的每个实例推送到一个新数组,那么数组+ 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

2 个答案:

答案 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