Ruby 循环和 类;将字符串拆分为数组并再次返回字符串

Ruby loops and classes; splitting a string into an array and back to a string again

Ruby 新手在这里使用 类 处理循环。我应该创建一个方法,该方法将采用一个字符串并在每个单词的末尾添加感叹号(通过使用 .split 使其成为一个数组)并再次将 'exclaimed' 单词作为一个字符串加入。我已经在这里待了两个小时,并决定我应该寻求帮助。我有一些想法,但我一直想出一个 NoMethod 错误。以下是对我有意义的方法之一,但当然,它不起作用。我还在最后添加了规格。

class StringModifier
  attr_accessor :string
  def initialize(string)
    @string = string
  end

  def proclaim
    new_array = []
    string.split.each do |word|
      new array = "#{word}!"
        new_array.join
    end
    new_array
  end
end

规格

describe StringModifier do
  describe "#proclaim" do
    it "adds an exclamation mark after each word" do
      blitzkrieg_bop = StringModifier.new("Hey ho let's go").proclaim
      expect(blitzkrieg_bop).to eq("Hey! ho! let's! go!")
    end
  end
end

将你的方法写成:

def proclaim
  string.split.map { |word| "#{word}!" }.join(" ")
end

或写成:

def proclaim
  a = string.split
  ("%s! " * a.size % a).strip
end

已测试:

[30] pry(main)> a = "Hey ho let's go".split
=> ["Hey", "ho", "let's", "go"]
[31] pry(main)> ("%s! " * a.size % a).strip
=> "Hey! ho! let's! go!"
[32] pry(main)>