J'ai cette ficelle:
"some text\nandsomemore"
Je dois enlever le "\ n" de celui-ci. J'ai essayé
"some text\nandsomemore".gsub('\n','')
mais ça ne marche pas. Comment fait-on ça? Merci d'avoir lu.
Vous devez utiliser "\n"
ne pas '\n'
dans votre gsub. Les différents guillemets se comportent différemment.
Double citation "
autorise le développement des caractères et l’interpolation d’expression, c.-à-d. ils vous permettent d'utiliser des caractères de contrôle échappés comme \n
pour représenter leur valeur réelle, dans ce cas, newline , et permettre l’utilisation de #{expression}
afin que vous puissiez tisser des variables et, ainsi, à peu près n'importe quelle expression Ruby que vous préférez dans le texte).
Par contre, les guillemets simples '
traite la chaîne littéralement, de sorte qu'il n'y ait pas d'expansion, de remplacement, d'interpolation ou autre.
Dans ce cas particulier, il vaut mieux utiliser soit le .delete
ou .tr
Méthode de chaîne pour supprimer les nouvelles lignes .
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
est maintenant égal à "foofoo"
Dans ce cas particulier String#delete
est plus lisible que gsub
puisque vous ne remplacez pas réellement la 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 méthode strip
.
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
comme mentionné ici .
edit Le titre original de cette question était différent. Ma réponse est pour la question initiale.
Vous n'avez pas besoin d'une regex pour cela. Utilisez tr:
"some text\nandsomemore".tr("\n","")
utilisez les fonctions chomp
ou strip
de Ruby:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"