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
Документація - твій друг! Це допоможе вам значно вивчити методи Array, String, Hash тощо.
Марк Томас

Відповіді:


303

Скористайтеся Array#joinметодом (аргументом joinє те, що вставити між рядками - у цьому випадку пробіл):

@arr.join(" ")

1
що робити, якщо ви приєднуєтесь до цифр? [1,2,3] => 123?
stevenspiel

3
@ mr.musicman joinпрацює з безліччю всього, що відповідає to_s, включаючи цілі числа, але результатом завжди буде рядок. Якщо ви хочете цілий результат, ви можете використовувати to_iйого.
sepp2k

1
Якщо ви спочатку розірвали багаторядковий рядок, використовуючи його String#lines, ви можете їх сумлінно пов'язати назад, використовуючи my_string.join('')(зверніть увагу на аргумент порожнього рядка).
Френк Кель

Щоб додати те, що сказав @ 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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.