Comment puis-je supprimer la chaîne “\ n” dans une chaîne Ruby?

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:

  • Comment remplacer plusieurs nouvelles lignes dans une ligne avec une nouvelle ligne en utilisant Ruby