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

时间:2013-05-25 18:50:37

标签: 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

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

修改

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

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

1 个答案:

答案 0 :(得分: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-"]