Wie hängt man ein neues Zeilenzeichen (\ n \ r) an StringBuilder
?
Wie hängt man ein neues Zeilenzeichen (\ n \ r) an StringBuilder
?
Antworten:
Ich würde die Environment.NewLine-Eigenschaft verwenden .
Etwas wie:
StringBuilder sb = new StringBuilder();
sb.AppendFormat("Foo{0}Bar", Environment.NewLine);
string s = sb.ToString();
Oder
StringBuilder sb = new StringBuilder();
sb.Append("Foo");
sb.Append("Foo2");
sb.Append(Environment.NewLine);
sb.Append("Bar");
string s = sb.ToString();
Wenn Sie nach jedem Anhängen eine neue Zeile haben möchten, können Sie sich die Antwort von Ben Voigt ansehen .
AppendLine
auf einem StreamWriter zu verwenden, dann wird die für diese bestimmte StreamWriter
und nicht nur für diese bestimmte Zeile geeignete Zeilenumbruchsequenz eingefügt Environment.NewLine
. Wenn Sie beispielsweise einen Stream öffnen, der an eine SMTP-Verbindung gebunden ist, können Sie seine NewLine
Eigenschaft auf "\ r \ n" setzen, und Sie erhalten auch unter Unix einen gültigen SMTP-Handshake.
Mit der AppendLine-Methode .
َََ
Verwenden Sie auch die StringBuilder.AppendLine- Methode.
Es wird \n
stattdessen unter Linux angehängt \r\n
.
StringBuilder sb = new StringBuilder();
Sie können sb.AppendLine () oder sb.Append (Environment.NewLine) verwenden .
Für mehrere Zeilen finde ich am besten Folgendes:
IEnumerable<string> lines = new List<string>
{
string.Format("{{ line with formatting... {0} }}", id),
"line 2",
"line 3"
};
StringBuilder sb = new StringBuilder();
foreach(var line in lines)
sb.AppendLine(line);
Auf diese Weise müssen Sie den Bildschirm nicht überladen, wenn Environment.NewLine oder AppendLine () mehrmals wiederholt werden. Es ist auch weniger fehleranfällig, als daran denken zu müssen, sie einzugeben.
Erstellen Sie einfach eine Erweiterung für die StringBuilder-Klasse:
Public Module Extensions
<Extension()>
Public Sub AppendFormatWithNewLine(ByRef sb As System.Text.StringBuilder, ByVal format As String, ParamArray values() As Object)
sb.AppendLine(String.Format(format, values))
End Sub
End Module