在字符串中的所有字符之间插入字符的更简洁方法

Mas*_*tid 1 ruby coding-style

我想在字符串的每个可能索引处插入一个字符,包括在第一个元素之前和最后一个元素之后.现在我正在做:

      result = []
      result << c + str
      result << str + c
      for i in 0..str.length-2 do
        result << (str[0..i] + c + str[i+1..-1])
      end
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以做到这一点,没有2个特殊情况,并有一个从0到0的循环 str.length - 2

编辑

使用' - '和'hello'输出示例:

["-hello", "h-ello", "he-llo", "hel-lo", "hell-o", "hello-"]
Run Code Online (Sandbox Code Playgroud)

tok*_*and 6

我假设你想要["-hello", "h-ello", "he-llo", "hel-lo", "hell-o", "hello-"],你的问题不明确.

s = "hello"
(0..s.size).map { |i| s.clone.insert(i, "-") }
#=> ["-hello", "h-ello", "he-llo", "hel-lo", "hell-o", "hello-"]
Run Code Online (Sandbox Code Playgroud)

对于那些喜欢功能性方法的人(我这样做):

(0..s.size).map { |i| (s[0...i] + "-" + s[i..-1]) }
#=> ["-hello", "h-ello", "he-llo", "hel-lo", "hell-o", "hello-"]
Run Code Online (Sandbox Code Playgroud)

  • @priti:这是我见过你批评任何人提交接受答案的3到4次. (3认同)
  • 抱怨社区支持/接受除了你自己之外的另一个答案并不构成"正当"理由. (2认同)