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 \npour 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 .deleteou .trString pour supprimer les nouvelles lignes .
trc'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#deleteest plus lisible que gsubpuisque vous ne remplacez pas réellement la chaîne par quoi que ce soit.
deleten'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 stripmé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.
stripsupprime 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","")
replacechange simplement la chaîne en une nouvelle, comme l'affectation de variable; alors que trest une recherche et un remplacement global caractère par caractère.
utilisation chompou stripfonctions de Ruby:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
stripsupprime uniquement les espaces de début