Rubino che combina un array in una stringa


163

In Ruby c'è un modo per combinare tutti gli elementi dell'array in una stringa?

Matrice di esempio:

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

Esempio di output:

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

6
La documentazione è tua amica! Ti aiuterà considerevolmente a studiare i metodi di Array, String, Hash, ecc.
Mark Thomas,

Risposte:


303

Usa il Array#joinmetodo (l'argomento to joinè cosa inserire tra le stringhe - in questo caso uno spazio):

@arr.join(" ")

1
e se ti unissi alle cifre? [1,2,3] => 123?
Stevenspiel,

3
@ mr.musicman joinlavora con gli enumerabili di tutto ciò che risponde to_s, inclusi gli interi, ma il risultato sarà sempre una stringa. Se si desidera un risultato intero, è possibile utilizzare to_iil risultato.
sepp2k,

1
Se inizialmente hai spezzato una stringa multi-linea usando String#lines, puoi tranquillamente ricollegarla usando my_string.join('')(nota l'argomento stringa vuota).
Frank Koehl,

Per aggiungere ciò che ha detto @ sepp2k: joinprova #to_strprima e #to_sseconda.
Greg Navis,

19

Mentre un po 'più criptico di join, puoi anche moltiplicare l'array per una stringa.

@arr * " "

1
oltre ad essere criptico, c'è qualche difetto possibile quando si usa questo trucco?
marcio

4
@marcioAlmada Nessun difetto, solo un minimo di spese generali. In array.c la prima cosa che fa Ruby è cercare un tipo di stringa e quindi chiamare il metodo join. Inoltre: fai leva con le rocce show-source! Prova tu stesso: $ Array.instance_methods.*($ è una scorciatoia per show-source)
ok,

1

Ecco la mia soluzione:

@arr = ['<p>Hello World</p>', '<p>This is a test</p>']
@arr.reduce(:+)
=> <p>Hello World</p><p>This is a test</p>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.