89 votes

Array.join("\n") n'est pas la façon de rejoindre une nouvelle ligne ?

J'ai un tableau..

[1,2,3,4]

et je veux une chaîne contenant tous les éléments séparés par une nouvelle ligne..

1

2

3

4

mais quand j'essaie [1,2,3,4].join("\n") je reçois

1\n2\n3\n4

J'ai l'impression qu'il y a une réponse évidente, mais je ne la trouve pas !

93voto

Cody Caughlan Points 18780

Oui, mais si vous imprimez ce string, il y aura de nouvelles lignes :

irb(main):001:0> a = (1..4).to_a
=> [1, 2, 3, 4]
irb(main):002:0> a.join("\n")
=> "1\n2\n3\n4"
irb(main):003:0> puts a.join("\n")
1
2
3
4

Il semble donc atteindre ce que vous désirez (?)

72voto

Screamer Points 251

Une erreur subtile qui peut se produire ici est d'utiliser des guillemets simples au lieu du double. Cela a également pour effet de rendre les nouvelles lignes comme \n. Donc

puts a.join("\n")   # correct

n'est pas le même que

puts a.join('\n')   # incorrect

Il y a une excellente écriture sur la raison pour laquelle c'est le cas ici.

17voto

Ajay Points 495

Au cas où quelqu'un chercherait cette fonctionnalité dans le modèle ERB, essayez ceci :

(1..5).to_a.join("<br>").html_safe

6voto

khelll Points 12222

Essayez aussi ceci :

puts (1..4).to_a * "\n"

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