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);
}
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
.
- See previous answers
- Weitere Antworten anzeigen