2

所以这是我正在处理的 Ruby 代码:

def translate(x)
 array = x.split(" ")
  array.each do |y|
    if y.match(/^[aeiou]/)
      y += "ay"
    else 
      until y.match(/^[aeiou]/) do
        var = y[/^[^aeiou]*/]
        y.slice! /^[^aeiou]*/
        y += (var + "ay")
      end
    end
  x = y.join(" ")
  x
end
end

测试的时候有问题。是这样的:

NoMethodError:
       undefined method `join' for "appleay":String

完全不确定我的加入方法是怎么回事。

4

1 回答 1

2

y是一个字符串。如果您需要从中制作字符数组,您应该这样做:

x = y.split(//).join(" ")

但可能你想把它放在循环之后。它看起来像:

def translate(x)
  array = x.split(" ")
  x = []
  array.each do |y|
    if y.match(/^[aeiou]/)
      y += "ay"
    else
      until y.match(/^[aeiou]/) do
        var = y[/^[^aeiou]*/]
        y.slice! /^[^aeiou]*/
        y += (var + "ay")
      end
    end
    x << y
  end
  x.join(' ')
end
于 2013-10-11T12:20:43.347 回答