Réponses:
Cela supprimera toute combinaison de retours chariot et de retours à la ligne à partir de la fin de s
:
s = s.TrimEnd(new char[] { '\r', '\n' });
Edit : Ou comme JP le souligne gentiment, vous pouvez l'épeler plus succinctement comme suit:
s = s.TrimEnd('\r', '\n');
s = s.TrimEnd()
- comme le disent les documents: si trimChars est nul ou un tableau vide, les caractères d'espacement Unicode sont supprimés à la place. - voir String.TrimEnd
'\r'
et '\n'
et rien d'autre, pas le caractère d'espace ' '
par exemple.
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 à la ligne et de retour chariot.
tst.TrimEnd( '\r', '\n' )
- est raisonnablement "sûre" dans la pratique puisque les principaux EOL ne sont [actuellement] que des combinaisons différentes 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 0D et 0As
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.
String temp = s.Replace("\r\n","").Trim();
s
étant la chaîne d'origine. (Notez les majuscules)
replace()
alors trim()
pas surpuissant quand TrimEnd()
peut faire le travail seul, ou suis - je manque quelque chose?
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 un '\ r' ou un '\ n' , donc je devrais l'exécuter deux fois sur ma chaîne - une fois pour quand '\ n' était à la fin et la deuxième fois pour quand '\ r' était à la fin (maintenant que le '\ n' était supprimé) .
S'il y a toujours un seul CRLF, alors:
myString = myString.Substring(0, myString.Length - 2);
S'il peut l'avoir ou non, alors:
Regex re = new Regex("\r\n$");
re.Replace(myString, "");
Ces deux éléments (de par leur conception) supprimeront au plus un seul CRLF. Mettez en cache l'expression régulière pour les performances.
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, 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 manière à ce qu'un utilisateur final puisse utiliser le Bloc-notes pour modifier directement le fichier afin qu'il ne soit pas possible de savoir où ces caractères pourraient s'intégrer - cela pourrait être autre qu'au début ou à la fin de la chaîne. Donc, les supprimer tous suffit.
Les autres entrées fonctionnent toutes, mais Supprimer pourrait être le plus simple?
J'ai appris un peu plus sur Regex à partir de cet article - un travail assez cool avec son utilisation ici.
filter = filter.Remove('\n').Remove('\r');
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
C'est ce que je dois travailler pour moi.
s.Replace("\r","").Replace("\n","")