1

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

      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

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

编辑

带有“-”和“hello”的示例输出:

["-hello", "h-ello", "he-llo", "hel-lo", "hell-o", "hello-"]
4

1 回答 1

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-"]

对于那些喜欢功能性方法的人(我愿意):

(0..s.size).map { |i| (s[0...i] + "-" + s[i..-1]) }
#=> ["-hello", "h-ello", "he-llo", "hel-lo", "hell-o", "hello-"]
于 2013-05-25T19:10:06.777 回答