Ruby将数组合并为一个字符串


163

在Ruby中,有没有一种方法可以将所有数组元素组合成一个字符串?

示例数组:

@arr = ['<p>Hello World</p>', '<p>This is a test</p>']

示例输出:

<p>Hello World</p><p>This is a test</p>

6
该文档是您的朋友!它会帮助你大大学习数组,字符串,哈希等的方法
马克托马斯

Answers:


303

使用Array#join方法(参数to join是在字符串之间插入的内容-在这种情况下为空格):

@arr.join(" ")

1
如果您要加入数字怎么办?[1,2,3] => 123
stevenspiel 2013年

3
@ mr.musicman join使用可枚举的任何可响应的东西to_s,包括整数,但结果始终是字符串。如果需要整数结果,则可以to_i在结果上使用。
sepp2k 2013年

1
如果您最初使用来分解多行字符串String#lines,则可以使用来将其合理地绑在一起my_string.join('')(请注意空字符串参数)。
Frank Koehl 2015年

要添加到@ sepp2k所说的内容:join尝试#to_str第一和#to_s第二。
格雷格·纳维斯

19

虽然比神秘join,但您也可以将数组乘以字符串。

@arr * " "

1
除了神秘之外,使用此技巧时是否还有任何缺陷?
marcio

4
@marcioAlmada没有缺陷,只有最小的开销。在array.c中,Ruby要做的第一件事是检查字符串类型,然后调用join方法。另外:撬开表演源岩石!自己尝试:($ Array.instance_methods.*$是显示源的缩写)
okket

1

这是我的解决方案:

@arr = ['<p>Hello World</p>', '<p>This is a test</p>']
@arr.reduce(:+)
=> <p>Hello World</p><p>This is a test</p>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.