132 votes

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

Comment supprimer le caractère retour chariot (\r) et le nouveau caractère de ligne (\n) à partir de la fin d'une chaîne de caractères ?

222voto

RichieHindle Points 98544

Ceci coupera n'importe quelle combinaison de retours de chariot et de nouvelles lignes à la fin du texte de la commande s :

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

Modifier : Ou comme JP l'a gentiment fait remarquer, vous pouvez l'écrire plus succinctement comme :

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

10 votes

Notez le mot clé params dans la déclaration de TrimEnd, il vous permet de passer plusieurs instances d'un caractère au lieu d'un tableau. msdn.microsoft.com/fr/us/library/w5zay9db(VS.71).aspx

4 votes

Que pensez-vous de ceci : s = s.TrimEnd(System.Environment.NewLine.ToCharArray()) ;

4 votes

J'écris du c# depuis la sortie de la v1.0 (il y a 10 ans). Maintenant vous me parlez de TrimEnd. Doh !

34voto

JP Alioto Points 33482

Cela devrait fonctionner...

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

21voto

Crash893 Points 2407
String temp = s.Replace("\r\n","").Trim();

s étant la chaîne originale. (Note en majuscules)

11 votes

Cela va aussi : 1) Supprimer \r\n du milieu de la chaîne, 2) supprimer tout caractère d'espacement du début de la chaîne, et 3) supprimer tout caractère d'espacement de la fin de la chaîne.

0 votes

C'est vrai, j'ai supposé qu'il n'y avait qu'un seul /r/n à la fin. Ce n'était pas mentionné dans le message original. Je ne suis pas sûr que cela justifie un vote -1.

0 votes

Exactement ce que je recherchais. Merci.

20voto

alexw Points 2328

Si vous utilisez plusieurs plateformes, il est plus sûr d'utiliser cette méthode.

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

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

0 votes

La méthode de JP tst.TrimEnd( '\r', '\n' ) -- est raisonnablement "sûr" dans la pratique puisque les principaux EOL sont [actuellement] juste différentes combinaisons de \r y \n mais celle d'Alexw est la "bonne" réponse. Laissez le CLR vous dire quels caractères se trouvent dans la nouvelle ligne de cette plate-forme. EOL n'a pas toujours été des combinaisons de 0D et 0A.

0 votes

J'avais l'habitude d'utiliser Environment.NewLine mais il ne semblait pas pouvoir gérer les cas où \r était présent sans \n . TrimEnd('r','\n') semble être plus fiable dans ce cas.

2 votes

Il se peut qu'il s'agisse en fait d'un problème multiplateforme, et que Dec doive supprimer spécifiquement les deux éléments suivants \r \n indépendamment de ce que dit l'environnement du système.

4voto

Matthew Flaschen Points 131723

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

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

Si elle peut ou ne peut pas l'avoir, alors :

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

Les deux (par conception), supprimeront au maximum un seul CRLF. Mettez en cache la regex pour plus de performance.

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