用字符串中的已修改索引替换旧索引,然后将其推入数组

问题描述 投票:0回答:1

我有一个初学者的问题。我试图简单地将修改后的索引替换回原始字符串以创建字符串数组。他们连续增加下一个元素中的下一个索引。这就是我所拥有的。谁能帮我看看我在想什么?

def wave(str)
  result = []
  index = 0
  while index < str.length
    i = str[index]
    if i == " "
      index =+ 1
    else
      upper = i.upcase
      val = str.rindex(upper) -1
      result.push("#{str[0...val]}#{str[val..-1]}")
      index += 1
    end
  end
  result
end

我正在尝试获得:[“ Hello”,“ hEllo”,“ heLlo”,“ helLo”,“ hellO”]来自---> wave(hello)

谢谢。

arrays ruby string indexing
1个回答
0
投票

您的else部分不太正确:

  1. 您不需要找到最右边的索引,因为您已经有index
  2. upper从不使用
  3. 正确的范围被一个偏移

这是一个有效的变体:

    # ...
    else
      upper = i.upcase
      result.push("#{str[0...index]}#{upper}#{str[index+1..-1]}")
      index += 1
    end
    # ...

您可以使用each_chareach_char使您的代码更加惯用:

with_index
© www.soinside.com 2019 - 2024. All rights reserved.