Antworten:
Dadurch wird jede Kombination von Wagenrückläufen und Zeilenumbrüchen ab dem Ende von s
:
s = s.TrimEnd(new char[] { '\r', '\n' });
Bearbeiten : Oder wie JP freundlich hervorhebt, können Sie dies prägnanter buchstabieren als:
s = s.TrimEnd('\r', '\n');
s = s.TrimEnd()
- wie in den Dokumenten angegeben: Wenn trimChars null oder ein leeres Array ist, werden stattdessen Unicode-Leerzeichen entfernt. - siehe String.TrimEnd
'\r'
und '\n'
und nichts anderem, ' '
zum Beispiel nicht nach dem Leerzeichen .
Wenn Sie mehrere Plattformen verwenden, sind Sie mit dieser Methode sicherer.
value.TrimEnd(System.Environment.NewLine.ToCharArray());
Es werden verschiedene Zeilenumbruch- und Wagenrücklaufzeichen berücksichtigt.
tst.TrimEnd( '\r', '\n' )
- ist in der Praxis ziemlich "sicher", da große EOLs [derzeit] nur verschiedene Kombinationen von \r
und sind \n
, aber die von alexw ist die "richtige" Antwort. Lassen Sie sich von der CLR mitteilen, welche Zeichen in der Newline dieser Plattform enthalten sind. EOL hat nicht immer Kombinationen von 0DS gewesen und 0AS
Environment.NewLine
aber es schien nicht mit Fällen umzugehen, in denen \r
es ohne vorhanden war \n
. TrimEnd('r','\n')
scheint in diesem Fall zuverlässiger zu sein.
String temp = s.replace("\r\n","").trim();
s
ist die ursprüngliche Zeichenfolge.
replace()
dann trim()
nicht übertrieben, wenn TrimEnd()
die Arbeit alleine erledigt werden kann, oder fehlt mir etwas?
s.TrimEnd();
Das Obige ist alles, was ich brauche, um '\ r \ n' vom Ende meiner Zeichenfolge zu entfernen.
Die positive Antwort scheint mir falsch. Erstens hat es nicht funktioniert, als ich es versucht habe, zweitens, wenn es funktioniert hat, würde ich erwarten, dass s.TrimEnd ('\ r', '\ n') nur entweder ein '\ r' oder ein '\ n' entfernen würde. , also müsste ich es zweimal über meine Zeichenfolge laufen lassen - einmal, wenn '\ n' am Ende war und das zweite Mal, wenn '\ r' am Ende war (jetzt, wo das '\ n' entfernt wurde) .
Wenn es immer eine einzelne CRLF gibt, dann:
myString = myString.Substring(0, myString.Length - 2);
Wenn es es haben kann oder nicht, dann:
Regex re = new Regex("\r\n$");
re.Replace(myString, "");
Beide (von Entwurf) entfernen höchstens eine einzelne CRLF. Zwischenspeichern Sie den regulären Ausdruck für die Leistung.
Das war zu einfach - für mich filtere ich bestimmte E-Mail-Elemente heraus. Ich schreibe meinen eigenen E-Mail-Junk-Filter. Mit \ r und / oder \ n in der Zeichenfolge wurden alle Elemente gelöscht, anstatt zu filtern.
Also habe ich gerade filter = filter.Remove ('\ n') und filter = filter.Remove ('\ r') gemacht. Ich mache meinen Filter so, dass ein Endbenutzer die Datei mit Notepad direkt bearbeiten kann, sodass nicht abzusehen ist, wo sich diese Zeichen möglicherweise selbst einbetten - möglicherweise nicht am Anfang oder Ende der Zeichenfolge. Das Entfernen aller macht es also.
Die anderen Einträge funktionieren alle, aber Entfernen könnte am einfachsten sein?
Ich habe in diesem Beitrag einiges mehr über Regex gelernt - ziemlich coole Arbeit mit seiner Verwendung hier.
filter = filter.Remove('\n').Remove('\r');
Ich benutze viel Löschstufe
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, "");
und jetzt haben wir eine saubere eine Reihe
Das muss ich für mich arbeiten.
s.Replace("\r","").Replace("\n","")