629 Stimmen

Ersetzen von Zeilenumbrüchen in einer Zeichenfolge C#

Wie kann ich Zeilenumbrüche innerhalb einer Zeichenfolge in C# ersetzen?

831voto

Corin Blaikie Punkte 17149

Verwenden Sie replace mit Environment.NewLine

myString = myString.Replace(System.Environment.NewLine, "replacement text"); //add a line terminating ;

Wie bereits in anderen Beiträgen erwähnt, müssen Sie, wenn die Zeichenkette aus einer anderen Umgebung (OS) stammt, die Implementierung der entsprechenden Umgebung von neue Zeilensteuerzeichen .

552voto

Mark Byers Punkte 761508

Die bisher veröffentlichten Lösungen ersetzen entweder nur Environment.NewLine oder sie scheitern, wenn die Ersetzungszeichenfolge Zeilenumbrüche enthält, weil sie die string.Replace mehrere Male.

Hier ist eine Lösung, die einen regulären Ausdruck verwendet, um alle drei Ersetzungen in nur einem Durchgang über die Zeichenfolge vorzunehmen. Dies bedeutet, dass die Ersetzungszeichenfolge sicher Zeilenumbrüche enthalten kann.

string result = Regex.Replace(input, @"\r\n?|\n", replacementString);

190voto

ZombieSheep Punkte 29085

Um die Antwort von The.Anyi.9 zu erweitern, sollten Sie sich auch über die verschiedene Arten von Zeilenumbrüchen im allgemeinen Gebrauch . Je nachdem, woher Ihre Datei stammt, sollten Sie sicherstellen, dass Sie alle Alternativen erfassen...

string replaceWith = "";
string removedBreaks = Line.Replace("\r\n", replaceWith).Replace("\n", replaceWith).Replace("\r", replaceWith);

sollte Sie in Schwung bringen...

47voto

Brian R. Bondy Punkte 325712

Ich würde Environment.Newline verwenden, wenn ich einen Zeilenumbruch für eine Zeichenkette einfügen wollte, aber nicht, um alle Zeilenumbrüche aus einer Zeichenkette zu entfernen.

Je nach Plattform können Sie verschiedene Arten von Zeilenumbrüchen verwenden, aber auch innerhalb derselben Plattform werden oft verschiedene Arten von Zeilenumbrüchen verwendet. Insbesondere bei Dateiformaten und Protokollen.

string ReplaceNewlines(string blockOfText, string replaceWith)
{
    return blockOfText.Replace("\r\n", replaceWith).Replace("\n", replaceWith).Replace("\r", replaceWith);
}

43voto

Boris Dligach Punkte 21

Neue Methode in .NET 6 verwenden

myString = myString.ReplaceLineEndings();

Ersetzt ALLE Zeilenumbrüche in der aktuellen Zeichenkette.

Dokumentation: ReplaceLineEndings

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X