174 votes

Ruby combine un tableau en une seule chaîne

Existe-t-il un moyen d'imploser un tableau en Ruby pour combiner tous les éléments 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>

Merci d'avance !

6 votes

La documentation est votre amie ! Elle vous aidera considérablement à étudier les méthodes de Array, String, Hash, etc.

329voto

sepp2k Points 157757

Utilisez le Array#join (l'argument de la méthode join est ce qu'il faut insérer entre les chaînes de caractères - dans ce cas un espace) :

@arr.join(" ")

1 votes

Et si vous rejoigniez les chiffres ? [1,2,3] => 123 ?

3 votes

@mr.musicman join fonctionne avec des énumérations de tout ce qui répond à la fonction to_s y compris les entiers, mais le résultat sera toujours une chaîne de caractères. Si vous voulez un résultat entier, vous pouvez utiliser to_i sur le résultat.

1 votes

Si vous avez initialement décomposé une chaîne de plusieurs lignes en utilisant String#lines vous pouvez raisonnablement l'attacher à nouveau en utilisant my_string.join('') (notez l'argument de la chaîne vide).

21voto

David Harkness Points 16674

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

@arr * " "

1 votes

En plus d'être énigmatique, y a-t-il un défaut possible dans l'utilisation de cette astuce ?

4 votes

@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 le type de chaîne de caractères, puis d'appeler la méthode join. De plus : pry avec show-source, c'est génial ! Essayez par vous-même : $ Array.instance_methods.* ($ est un raccourci pour show-source)

3voto

von spotz Points 59

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>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X