Arrays Ruby方法,该方法接受一个字符串并返回一个重复数组,将每个重复字符串中的下一个字母大写(如波浪)

Arrays Ruby方法,该方法接受一个字符串并返回一个重复数组,将每个重复字符串中的下一个字母大写(如波浪),arrays,ruby,string,methods,capitalize,Arrays,Ruby,String,Methods,Capitalize,我想创建一个函数,将一个字符串转换为一个相同的字符串数组,但每个字符串都将字符串中的下一个字母大写,而其余的保持小写。我将给它一个字符串,并希望它在数组中返回该字符串,其中的是一个大写字母,如下所示: wave("hello") => ["Hello", "hEllo", "heLlo", "helLo", "hellO"] wave("two words&qu

我想创建一个函数,将一个字符串转换为一个相同的字符串数组,但每个字符串都将字符串中的下一个字母大写,而其余的保持小写。我将给它一个字符串,并希望它在数组中返回该字符串,其中的是一个大写字母,如下所示:

wave("hello") => ["Hello", "hEllo", "heLlo", "helLo", "hellO"]
wave("two words") => ["Two words", "tWo words", "twO words", "two Words", "two wOrds", "two
                       woRds", "two worDs", "two wordS"]
我想出了这个,但它真的很大,需要很长时间运行。我如何压缩它或生成一些新代码,使它运行得更好

def wave(str)
  ary = []
  chars_array = str.chars
  total_chars = chars_array.count
  i = 0
  until i == total_chars
    if chars_array[i].match(/\w/i)
      chars_array_temp = str.chars
      chars_array_temp[i] = chars_array[i].upcase
      fixed_string = chars_array_temp.join
      ary << fixed_string
      i = i+1
    end
  end
  return ary
end
def波(str)
ary=[]
字符数组=str.chars
总字符数=字符数数组计数
i=0
直到i==总字符数
如果字符数组[i]。匹配(/\w/i)
chars\u数组\u temp=str.chars
字符数组\u temp[i]=字符数组[i]。upcase
固定字符串=字符数组临时连接
我会这样做:

def wave(word)
  words = Array.new(word.size) { word.dup }
  words.map.with_index { |e, i| e[i] = e[i].upcase; e } - [word]
end

wave("hello")
#=> ["Hello", "hEllo", "heLlo", "helLo", "hellO"]

wave("two words")
#=> ["Two words", "tWo words", "twO words", "two Words", "two wOrds", "two woRds", "two worDs", "two wordS"]

说到重复,你的问题似乎和我的一样。我特别喜欢得到绿色答案的答案。这能回答你的问题吗?谢谢,这很有效。