如何为除第一个和最后一个之外的所有数组元素添加前缀?
是否有单行解决方案?或者更好的'解决方案比我的?
result = ["svn up", "20111128025010", "20111128025022", "pass"]
for i in 1..result.length-2
result[i]=" - "+result[i]
end
答案 0 :(得分:8)
你可以这样做:
result[1 ... -1].each { |s| s[0, 0] = ' - ' }
请注意,有三个点,而不是两个。这是有效的,因为s[0,0]
就地修改了s
。如果你使用1.9.3+,你也可以(也可能应该)使用prepend
:
result[1 ... -1].each { |s| s.prepend(' - ') }
并且,正如评论中的the Tin Man注释,您还可以使用更常见的双点范围运算符:
result[1 .. -2].each { |s| s[0, 0] = ' - ' }
result[1 .. -2].each { |s| s.prepend(' - ') }
您使用的范围运算符是首选项。
答案 1 :(得分:4)
也可以这样做:
result = ["svn up", "20111128025010", "20111128025022", "pass"]
result[1..-2].map { |s| s.insert(0, '-') }
p result #=> ["svn up", "-20111128025010", "-20111128025022", "pass"]