Réponses:
Vous devez utiliser "\n"
not '\n'
dans votre gsub. Les différents guillemets se comportent différemment.
Les guillemets doubles "
permettent l'expansion des caractères et l'interpolation d'expression. ils vous permettent d'utiliser des caractères de contrôle échappés comme \n
pour représenter leur vraie valeur, dans ce cas, une nouvelle ligne , et permettent l'utilisation de#{expression}
afin que vous puissiez tisser des variables et, bien, à peu près n'importe quelle expression ruby que vous aimez dans le texte.
Alors que d'un autre côté, les guillemets simples '
traitent la chaîne littéralement, il n'y a donc pas d'expansion, de remplacement, d'interpolation ou quoi que ce soit d'autre.
Dans ce cas particulier, il est préférable d'utiliser la méthode .delete
ou .tr
String pour supprimer les nouvelles lignes .
tr
c'est un meilleur choix pour cette tâche, mais comme je l'ai dit, j'ai pensé qu'il était préférable de souligner la différence entre guillemets simples et doubles lorsque j'ai répondu.
Lorsque vous souhaitez supprimer une chaîne, plutôt que de la remplacer, vous pouvez utiliser String#delete
(ou son équivalent mutateur String#delete!
), par exemple:
x = "foo\nfoo"
x.delete!("\n")
x
équivaut désormais à "foofoo"
Dans ce cas précis, il String#delete
est plus lisible que gsub
puisque vous ne remplacez pas réellement la chaîne par quoi que ce soit.
delete
n'est pas destructif comme indiqué ici. Il renvoie une nouvelle chaîne.
Si vous voulez ou que cela ne vous dérange pas de supprimer tous les espaces de début et de fin de votre chaîne, vous pouvez utiliser la strip
méthode.
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
comme mentionné ici .
modifier Le titre original de cette question était différent. Ma réponse concerne la question initiale.
strip
supprime uniquement les espaces de début
Vous n'avez pas besoin d'une expression régulière pour cela. Utilisez tr:
"some text\nandsomemore".tr("\n","")
replace
change simplement la chaîne en une nouvelle, comme l'affectation de variable; alors que tr
est une recherche et un remplacement global caractère par caractère.
utilisation chomp
ou strip
fonctions de Ruby:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
strip
supprime uniquement les espaces de début