我想在字符串的每个可能索引处插入一个字符,包括在第一个元素之前和最后一个元素之后。现在我正在做:
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-"]
答案 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-"]