Ruby combinant un tableau en une seule chaîne


163

Dans Ruby, existe-t-il un moyen de combiner tous les éléments du tableau en une seule chaîne?

Exemple de tableau:

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

Exemple de sortie:

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

6
La documentation est votre ami! Cela vous aidera considérablement à étudier les méthodes de Array, String, Hash, etc.
Mark Thomas

Réponses:


303

Utilisez la Array#joinméthode (l'argument à joinest ce qu'il faut insérer entre les chaînes - dans ce cas un espace):

@arr.join(" ")

1
Et si vous joigniez des chiffres? [1,2,3] => 123?
stevenspiel

3
@ mr.musicman joinfonctionne avec les énumérables de tout ce qui répond to_s, y compris les entiers, mais le résultat sera toujours une chaîne. Si vous voulez un résultat entier, vous pouvez utiliser to_isur le résultat.
sepp2k

1
Si vous avez initialement rompu une chaîne multiligne à l'aide de String#lines, vous pouvez la relier correctement à l'aide de my_string.join('')(notez l'argument de chaîne vide).
Frank Koehl

Pour ajouter à ce que @ sepp2k a dit: joinessaie en #to_strpremier et en #to_ssecond.
Greg Navis

19

Bien qu'un peu plus cryptique que join, vous pouvez également multiplier le tableau par une chaîne.

@arr * " "

1
en plus d'être cryptique, y a-t-il un défaut possible lors de l'utilisation de cette astuce?
marcio

4
@marcioAlmada Pas de défaut, juste des frais généraux minimes. Dans array.c, la première chose que fait Ruby est de vérifier un type de chaîne, puis d'appeler la méthode de jointure. Aussi: faites levier avec des roches de source d'exposition! Essayez par vous-même: $ Array.instance_methods.*($ est un raccourci pour show-source)
okket

1

Voici ma solution:

@arr = ['<p>Hello World</p>', '<p>This is a test</p>']
@arr.reduce(:+)
=> <p>Hello World</p><p>This is a test</p>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.