配列を1つの文字列に結合するRuby


163

Rubyでは、すべての配列要素を1つの文字列に組み合わせる方法はありますか?

配列の例:

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

出力例:

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

6
ドキュメントはあなたの友達です!これは、など配列、文字列、ハッシュ、の方法を研究するために、かなりのお手伝いをします
マーク・トーマス

回答:


303

Array#joinメソッドを使用します(引数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('')(空の文字列引数に注意してください)。
フランクケール2015

@ sepp2kの発言に追加するにjoinは、#to_str最初と#to_s2番目に試行します。
Greg Navis、

19

より少し不可解joinですが、配列に文字列を掛けることもできます。

@arr * " "

1
不可解であることに加えて、このトリックを使用する際に問題が発生する可能性はありますか?
marcio

4
@marcioAlmada欠陥はなく、オーバーヘッドは最小限です。array.cでRubyが最初に行うことは、文字列タイプをチェックしてから、joinメソッドを呼び出すことです。また、ショーソースのロックでこじ開けてください!試してみてください:$ Array.instance_methods.*($はshow-sourceの省略形です)
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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.