2010-10-25 4 views
123

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

Exemple Tableau:

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

Résultat:

<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. –

Répondre

236

utiliser la méthode Array#join (l'argument de join est ce que l'insertion entre les cordes - dans ce cas un espace):

@arr.join(" ") 
+1

et si vous compiliez des chiffres? '[1,2,3] => 123'? –

+2

@ mr.musicman 'join' fonctionne avec les énumération 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_i' sur le résultat. – sepp2k

+0

Si vous avez initialement rompu une chaîne multiligne en utilisant ['String # lines'] (http://ruby-doc.org/core-2.2.0/String.html#method-i-lines), vous pouvez l'a lié ensemble en utilisant 'my_string.join ('')' (notez l'argument de chaîne vide). –

16

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 Aucun défaut, juste un minimum de frais généraux. Dans array.c, la première chose que Ruby fait est de vérifier un type de chaîne, puis d'appeler la méthode de jointure. Aussi: priez avec des roches de source! Essayez par vous-même: '$ Array.instance_methods. *' ($ Est un raccourci pour show-source) – okket

Questions connexes