596 Stimmen

Ersetzen von Zeilenumbrüchen in einer Zeichenfolge C#

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

801voto

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 .

513voto

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

183voto

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...

43voto

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);
}

19voto

driis Punkte 156110

Wenn Ihr Code in verschiedenen Umgebungen laufen soll, würde ich die Verwendung der Environment.NewLine Konstante, da es sich speziell um die newline in der jeweiligen Umgebung verwendet werden.

line = line.Replace(Environment.NewLine, "newLineReplacement");

Wenn Sie den Text jedoch aus einer Datei beziehen, die von einem anderen System stammt, ist dies möglicherweise nicht die richtige Antwort, und Sie sollten ihn durch die auf dem anderen System verwendete Zeilenumbruchkonstante ersetzen. Normalerweise ist das \n o \r\n .

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