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метод (аргумент to 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
Помимо того, что загадочный, есть ли возможный недостаток при использовании этого трюка?
Марсио

4
@marcioAlmada Нет недостатков, просто минимальные накладные расходы. В файле array.c первое, что делает Ruby, проверяет тип строки и затем вызывает метод join. Также: подглядывайте в скалах-источниках! Попробуйте сами: $ Array.instance_methods.*($ - сокращение для шоу-источника)
окк

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.