J’ai cette chaîne:
"some text\nandsomemore"
Je dois supprimer 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"
pas '\n'
dans votre espace de travail. Les différentes guillemets se comportent différemment.
Les guillemets "
permettent l’expansion des caractères et l’interpolation des expressions, c’est-à-dire qu’ils 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 permettent d’utiliser #{expression}
, à peu près toutes les expressions de rbuy que vous aimez dans le texte.
Alors que les guillemets simples traitent la chaîne littéralement, il n’y a donc pas d’extension, de remplacement, d’interpolation ou de quoi que ce soit.
Dans ce cas particulier, il est préférable d’utiliser la .delete
ou .tr
Ssortingng pour supprimer les nouvelles lignes .
Voir ici pour plus d’infos
Lorsque vous souhaitez supprimer une chaîne au lieu de la remplacer, vous pouvez utiliser Ssortingng#delete
(ou son équivalent mutateur Ssortingng#delete!
), Par exemple:
x = "foo\nfoo" x.delete!("\n")
x
est égal à “foofoo”
Dans ce cas spécifique, Ssortingng#delete
est plus lisible que gsub
puisque vous ne remplacez pas réellement la chaîne par quelque chose.
Si 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 des ssortingp
.
" hello ".ssortingp #=> "hello" "\tgoodbye\r\n".ssortingp #=> "goodbye"
comme mentionné ici .
edit Le titre original de cette question était différent. Ma réponse est pour la question originale.
Vous n’avez pas besoin d’une expression régulière pour cela. Utilisez tr:
"some text\nandsomemore".tr("\n","")
utiliser les fonctions chomp
ou ssortingp
de Ruby:
"abcd\n".chomp => "abcd" "abcd\n".ssortingp => "abcd"
Regardez ici: