Ich habe eine Zeichenfolge im folgenden Format
string s = "This is a Test String.\n This is a next line.\t This is a tab.\n'
Ich möchte alle Vorkommen von \n
und \r
aus der obigen Zeichenfolge entfernen .
Ich habe es versucht, string s = s.Trim(new char[] {'\n', '\r'});
aber es hat nicht geholfen.
Sie möchten verwenden
String.Replace
, um ein Zeichen zu entfernen.Beachten Sie, dass
String.Trim(params char[] trimChars)
nur führende und nachfolgende ZeichentrimChars
aus der aufgerufenen Instanz entfernt werden.Sie können eine Erweiterungsmethode erstellen, mit der die oben genannten Leistungsprobleme beim Erstellen vieler temporärer Zeichenfolgen vermieden werden:
quelle
Ich weiß, dass dies ein alter Beitrag ist, aber ich dachte, ich würde die Methode teilen, mit der ich neue Zeilenzeichen entferne.
Verweise:
MSDN String.Replace-Methode und MSDN Environment.NewLine-Eigenschaft
quelle
Wenn Geschwindigkeit und geringe Speichernutzung wichtig sind, gehen Sie wie folgt vor:
quelle
mach das einfach
quelle
Ein LINQ-Ansatz:
quelle
string.Join
, dieToString
bei jedemchar
von der Abfrage zurückgegebenen Aufruf auftritt. Es ist besser, die Abfrageergebnisse einfach an denstring
Konstruktor zu übergeben.s1 = new string(s.Where(....).ToArrary());
Die richtige Wahl hängt wirklich davon ab, wie groß die Eingabezeichenfolge ist und wie hoch die Perforations- und Speicheranforderungen sind, aber ich würde einen regulären Ausdruck wie verwenden
Oder wenn wir denselben Ersatz mehrmals anwenden müssen, ist es besser, eine kompilierte Version für Regex wie zu verwenden
HINWEIS: Unterschiedliche Szenarien erfordern unterschiedliche Ansätze, um die beste Leistung und den minimalen Speicherverbrauch zu erzielen
quelle
Nun ... Ich möchte, dass Sie spezifischere Bereiche des Raums verstehen.
\t
wird tatsächlich als horizontaler Raum sortiert, nicht als vertikaler Raum. (Testen Sie das Einfügen\t
in den Editor)Wenn Sie Java verwenden, verwenden Sie einfach
\v
. Siehe die Referenz unten.Mir ist jedoch bewusst, dass Sie .NET verwenden. Meine Antwort auf das Ersetzen jedes vertikalen Raums lautet also ..
quelle
Sie können verwenden,
Trim
wenn Sie von Anfang und Ende entfernen möchten.quelle
Zu Ihrer Information,
Trim () macht das schon.
Das folgende LINQPad-Beispiel:
Ausgänge:
quelle