是否存在'join'方法的爆炸版本?

时间:2013-09-28 19:37:54

标签: ruby

在Ruby中,如何以最有效的方式将数组转换为字符串?

 @x = ["foo","bar"]
 @x = @x.join(", ") #=> "foo, bar"

只是想知道是否有更好的方法来做到这一点。

5 个答案:

答案 0 :(得分:8)

不能有“爆炸版”。这意味着就地改变对象。但是join计算String中的Array。所以它之后不能是同一个对象。

答案 1 :(得分:6)

  

只是想知道是否有更好的方法来做到这一点。

您希望使用Array#*吗?

x = ["foo","bar"]
x *", " # => "foo, bar"

注意: - 带有字符串参数的Array#*方法将为您提供一个新的字符串对象。

答案 2 :(得分:3)

正如Arup Rakshit所提到的,当提供字符串作为参数时,Array#*运算符被重载以调用#join。您可以利用ruby的*=运算符提供的语法糖。所以

a = *1..10
> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a *= '|'
> "1|2|3|4|5|6|7|8|9|10"
a
> "1|2|3|4|5|6|7|8|9|10"

答案 3 :(得分:0)

您考虑过@x.to_s了吗?我不确定你要找的是什么输出。

答案 4 :(得分:0)

更容易:

@x = ["foo","bar"]
@x.join(',').split(', ')
 #=> "foo, bar"