2009-05-16 13 views

Répondre

162

Cela couper toute combinaison des retours et des retours à la ligne transport de la fin de s:

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

Modifier: Ou comme JP souligne gentiment, vous pouvez épeler plus succinctement:

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

propre Prenez note du mot-clé params dans la déclaration de TrimEnd, il vous a laissé passer plusieurs instances d'un caractère au lieu du tableau. http://msdn.microsoft.com/en-us/library/w5zay9db(VS.71).aspx –

+2

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

+4

J'ai écrit C# depuis que v1.0 est sorti (il y a 10 ans). Maintenant vous me parlez de TrimEnd. Doh! – s15199d

28

Cela devrait fonctionner ...

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

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

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, ""); 

Ces deux (par la conception), enlèvera au plus un seul CRLF . Cache l'expression rationnelle pour la performance.

9
String temp = s.replace("\r\n","").trim(); 

s étant la chaîne d'origine.

+10

Cela va aussi: 1) Supprimer \ r \ n du milieu de la chaîne, 2) Supprimer les caractères d'espaces depuis le début de la chaîne, et 3) supprimer tous les caractères d'espaces de la fin de la chaîne. – RichieHindle

+0

Vrai, j'ai supposé seulement un/r/n à la fin. Ce n'était pas mentionné dans le message original. Je ne suis pas sûr que warrents un vote -1 – Crash893

+0

Exactement ce que je cherchais. Merci. – NotMe

4

Pour nous VBers:

TrimEnd(New Char() {ControlChars.Cr, ControlChars.Lf}) 
2
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+", " "); 
0
varName.replace(/[\r\n]/mg, '')            
3

C'était trop facile - pour moi je filtrer certains articles de courrier électronique. J'écris mon propre filtre de courrier indésirable personnalisé. Avec \ r et/ou \ n dans la chaîne, il effaçait tous les éléments au lieu de filtrer. Donc, je viens de faire filter = filter.Remove ('\ n') et filter = filter.Remove ('\ r'). Je crée mon filtre de sorte qu'un utilisateur final puisse utiliser le Bloc-notes pour éditer directement le fichier afin de ne pas savoir où ces caractères pourraient s'incorporer eux-mêmes - pourrait être autre chose que le début ou la fin de la chaîne. Donc, les enlever tous le fait.

Les autres entrées tous les travaux, mais Supprimer pourrait être le plus facile?

j'ai appris un peu plus sur Regex de ce poste - travail assez cool avec son utilisation ici.

+0

On dirait que vous pourriez faire juste 'filter = filter.Remove ('\ n'). Remove ('\ r');' –

17

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

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

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

+0

La méthode de JP - 'tst.TrimEnd ('\ r', ' \ n ') '- est raisonnablement" sûr "dans la pratique puisque les principaux EOL ne sont [actuellement] que des combos différents de" \ r "et" \ n ", mais alexw est la" bonne "réponse. * Laissez le CLR vous dire quels caractères sont dans la nouvelle ligne de cette plate-forme. * [EOL n'a pas toujours été des combos de 0Ds et 0As] (http://en.wikipedia.org/wiki/Newline#Representations) – ruffin

+0

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

+2

Il se peut qu'il s'agisse en fait d'un problème multiplate-forme et que dec doit supprimer spécifiquement les deux \ r \ n, indépendamment de ce que dit l'environnement système. –

5
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 me semble upvoted tort. Premièrement, cela n'a pas fonctionné quand j'ai essayé, deuxièmement, si cela a fonctionné, je m'attendrais à ce que l'art.TrimEnd ('\ r', '\ n') supprimerait seulement soit un '\ r' ou un '\ n', donc je devrais l'exécuter deux fois sur ma chaîne - une fois pour '\ n' était à la fin et la deuxième fois quand '\ r' était à la fin (maintenant que le '\ n' avait été enlevé).

1

-je utiliser beaucoup d'effacer le niveau

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 nous avons maintenant une ligne

Questions connexes