迭代数组并使用ruby

时间:2017-07-12 03:48:40

标签: ruby-on-rails arrays ruby loops each

如果我有像

这样的数组
names = ["John", "Sam", "Sandy", "Andrew", "Charlie"]

我必须编写一个接收数组作为参数的方法。在该方法内部,使用每个方法迭代数组。如果名称以“S”开头,则输出消息。

我该怎么做呢?到目前为止我只有

names.each do |i|
   puts i
end

3 个答案:

答案 0 :(得分:3)

Ruby 1.9.2引入了start_with?,它将一个字符串作为参数引入并检查其在另一个字符串中的存在。

在你的情况下,你可以这样做。

names.each do |name|
  puts 'output a message' if name.start_with?('S')
end

但是对于更真实的场景,你应该做两件事。

  1. 该名称也可以从's'开始,而不是'S',因此请搜索两者。
  2. 它可能在实际名称之前有空格。使用.strip方法跟踪空格,然后搜索。
  3. 所以你应该像这样搜索更实用的场景。

    names = ["John", "sam", " Sandy", "Andrew", "Charlie"]
    
    names.each do |name|
      puts 'output a message' if name.strip.start_with?('s', 'S')
    end
    

答案 1 :(得分:2)

您可以尝试使用start_with?

names = ["John", "Sam", "Sandy", "Andrew", "Charlie"]

names.each do |name|
  puts 'output a message' if name.start_with?('S')
end
# output a message (for Sam)
# output a message (for Sandy)

答案 2 :(得分:0)

Ruby方式是使用带有块的select或带有正则表达式的grep来过滤以' S'开头的名称,然后才使用{{ 1}}显示所选名称:

each