Wie kann ich Zeilenumbrüche innerhalb einer Zeichenfolge in C# ersetzen?
Antworten
Zu viele Anzeigen?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 .
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);
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...
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);
}
Neue Methode in .NET 6 verwenden
myString = myString.ReplaceLineEndings();
Ersetzt ALLE Zeilenumbrüche in der aktuellen Zeichenkette.
Dokumentation: ReplaceLineEndings
- See previous answers
- Weitere Antworten anzeigen