Ruby menggabungkan array menjadi satu string

163

Di Ruby apakah ada cara untuk menggabungkan semua elemen array menjadi satu string?

Contoh Array:

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

Contoh Output:

<p>Hello World</p><p>This is a test</p>
dennismonsewicz
sumber
6
Dokumentasi adalah teman Anda! Ini akan sangat membantu Anda mempelajari metode Array, String, Hash, dll.
Mark Thomas

Jawaban:

303

Gunakan Array#joinmetode (argumen untuk joinapa yang harus disisipkan di antara string - dalam hal ini spasi):

@arr.join(" ")
sepp2k
sumber
1
bagaimana jika Anda bergabung dengan angka? [1,2,3] => 123?
stevenspiel
3
@ mr.musicman joinbekerja dengan enumerables apa pun yang merespons to_s, termasuk bilangan bulat, tetapi hasilnya akan selalu berupa string. Jika Anda menginginkan hasil bilangan bulat, Anda dapat menggunakan to_ihasilnya.
sepp2k
1
Jika pada awalnya Anda memecah string multi-line menggunakan String#lines, Anda dapat mengikatnya dengan sehat menggunakan my_string.join('')(perhatikan argumen string kosong).
Frank Koehl
Untuk menambahkan apa yang dikatakan @ sepp2k: joincoba #to_strdulu dan #to_skedua.
Greg Navis
19

Meskipun sedikit lebih samar daripada join, Anda juga bisa mengalikan array dengan string.

@arr * " "
David Harkness
sumber
1
Selain samar, apakah ada kemungkinan cacat saat menggunakan trik ini?
marcio
4
@marcioAlmada Tidak cacat, hanya overhead minimal. Dalam array.c hal pertama yang dilakukan Ruby adalah memeriksa tipe string dan kemudian memanggil metode join. Juga: cungkil dengan batu sumber pertunjukan! Coba sendiri: $ Array.instance_methods.*($ adalah singkatan untuk show-source)
okket
1

Inilah solusi saya:

@arr = ['<p>Hello World</p>', '<p>This is a test</p>']
@arr.reduce(:+)
=> <p>Hello World</p><p>This is a test</p>
von spotz
sumber