110 votes

Comment puis-je supprimer la chaîne " \n " à partir d'une chaîne Ruby ?

J'ai cette corde :

"some text\nandsomemore"

Je dois enlever le " \n "à partir de celui-ci. J'ai essayé

"some text\nandsomemore".gsub('\n','')

mais ça ne marche pas. Comment dois-je m'y prendre ? Merci de votre lecture.

162voto

EmacsFodder Points 12284

Vous devez utiliser "\n" pas '\n' dans votre gsub. Les différents guillemets se comportent différemment.

Double guillemets " permettent l'expansion de caractères et l'interpolation d'expressions, c'est-à-dire qu'ils vous permettent d'utiliser des caractères de contrôle échappés tels que \n pour représenter leur vraie valeur, dans ce cas, nouvelle ligne et permettre l'utilisation de #{expression} de sorte que vous pouvez tisser des variables et, bien, à peu près n'importe quelle expression ruby que vous aimez dans le texte.

Alors que d'autre part, les guillemets simples ' traitent la chaîne littéralement, sans expansion, remplacement, interpolation ou autre.

Dans ce cas particulier, il est préférable d'utiliser l'une ou l'autre des options suivantes .delete ou .tr Méthode String pour supprimer le nouvelles lignes .

Voir ici pour plus d'informations

56voto

Paul Leader Points 482

Lorsque vous voulez supprimer une chaîne de caractères, 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 précis String#delete est plus lisible que gsub puisque vous ne remplacez pas réellement la chaîne de caractères par quelque chose.

52voto

ThomasW Points 8078

Si vous voulez ou ne voyez pas d'inconvénient à ce que tous les espaces avant et arrière de votre chaîne soient supprimés, vous pouvez utiliser la fonction strip méthode.

"    hello    ".strip   #=> "hello"   
"\tgoodbye\r\n".strip   #=> "goodbye"

comme indiqué ici .

29voto

Mark Thomas Points 19281

Vous n'avez pas besoin d'une regex pour cela. Utilisez tr :

"some text\nandsomemore".tr("\n","")

17voto

Mateo Vidal Points 36

Utiliser chomp ou strip de Ruby :

"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"

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