如何在所有数组元素中插入前缀,但是第一个和最后一个?

时间:2011-12-19 03:56:20

标签: ruby string

如何为除第一个和最后一个之外的所有数组元素添加前缀?

是否有单行解决方案?或者更好的'解决方案比我的?

result = ["svn up", "20111128025010", "20111128025022", "pass"]
for i in 1..result.length-2
  result[i]=" - "+result[i]
end

2 个答案:

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

请参阅ri String#insert