web-dev-qa-db-fra.com

Supprimer le retour à la ligne et la nouvelle ligne de la fin d'une chaîne en c #

Comment puis-je supprimer le caractère de retour chariot (\r) Et le caractère de nouvelle ligne (\n) De la fin d'une chaîne?

104
Avik

Cela supprimera toute combinaison de retours chariot et de nouvelles lignes à partir de la fin de s:

s = s.TrimEnd(new char[] { '\r', '\n' });

Edit: Ou, comme le souligne gentiment JP, vous pouvez l'épeler plus succinctement de la manière suivante:

s = s.TrimEnd('\r', '\n');
187
RichieHindle

Cela devrait marcher ...

var tst = "12345\n\n\r\n\r\r";
var res = tst.TrimEnd( '\r', '\n' );
30
JP Alioto

Si vous utilisez plusieurs plates-formes, vous êtes plus en sécurité avec cette méthode.

value.TrimEnd(System.Environment.NewLine.ToCharArray());

Il tiendra compte de différents caractères de nouvelle ligne et de retour de chariot.

19
Alex Wiese
String temp = s.replace("\r\n","").trim();

s étant la chaîne d'origine.

11
Crash893
s.TrimEnd();

Ce qui précède est tout ce dont j'avais besoin pour supprimer "\ r\n" de la fin de ma chaîne.

La réponse votée me semble fausse. Premièrement, cela n'a pas fonctionné lorsque j'ai essayé; deuxièmement, si cela fonctionnait, je m'attendrais à ce que s.TrimEnd ('\ r', '\ n') ne supprime que soit a '\ r 'ou un'\n ', je devrais donc l'exécuter deux fois sur ma chaîne - une fois pour quand'\n 'était à la fin et la deuxième fois pour'\r 'à la fin (maintenant que le '\ n' a été supprimé).

7
martinp999

S'il y a toujours un seul CRLF, alors:

myString = myString.Substring(0, myString.Length - 2);

S'il peut ou non en avoir, alors:

Regex re = new Regex("\r\n$");
re.Replace(myString, "");

Ces deux éléments (par leur conception) supprimeront au plus un seul CRLF. Cache la regex pour la performance.

4
Matthew Flaschen

Pour nous VBers:

TrimEnd(New Char() {ControlChars.Cr, ControlChars.Lf})
4
Simon
string k = "This is my\r\nugly string. I want\r\nto change this. Please \r\n help!";
k = System.Text.RegularExpressions.Regex.Replace(k, @"\r\n+", " ");
3
vnRock

C'était trop facile - pour moi, je filtre certains éléments de courrier électronique. J'écris mon propre filtre de courrier indésirable personnalisé. Avec\r et/ou\n dans la chaîne, tous les éléments étaient effacés au lieu d'être filtrés.

Donc, je viens de faire filter = filter.Remove ('\ n') et filter = filter.Remove ('\ r'). Mon filtre est conçu de sorte qu'un utilisateur final puisse utiliser le Bloc-notes pour modifier directement le fichier, de sorte que personne ne sache où ces caractères pourraient s'incorporer - cela peut être différent du début ou de la fin de la chaîne. Donc, les supprimer tous le fait.

Les autres entrées fonctionnent toutes, mais l'option Supprimer est peut-être la plus simple.

J'ai appris pas mal plus sur Regex grâce à ce post - un travail plutôt cool avec son utilisation ici.

3
user1585204

J'utilise beaucoup de niveau d'effacement

String donen = "lots of stupid whitespaces and new lines and others..."

//Remove multilines
donen = Regex.Replace(donen, @"^\s+$[\r\n]*", "", RegexOptions.Multiline);
//remove multi whitespaces
RegexOptions options = RegexOptions.None;
Regex regex = new Regex("[ ]{2,}", options);
donen = regex.Replace(donen, " ");
//remove tabs
char tab = '\u0009';
donen = donen.Replace(tab.ToString(), "");
//remove endoffile newlines
donen = donen.TrimEnd('\r', '\n');
//to be sure erase new lines again from another perspective
donen.Replace(Environment.NewLine, "");

et maintenant nous avons une rangée propre

1
matasoy
varName.replace(/[\r\n]/mg, '')                                              
0
Pat