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>

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(" ")

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 * " "

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>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.