如何在 StringBuilder
中添加一个新行(\n\r)字符?
如何在 StringBuilder
中添加一个新行(\n\r)字符?
类似于:
StringBuilder sb = new StringBuilder();
sb.AppendFormat("Foo{0}Bar", Environment.NewLine);
string s = sb.ToString();
或者
StringBuilder sb = new StringBuilder();
sb.Append("Foo");
sb.Append("Foo2");
sb.Append(Environment.NewLine);
sb.Append("Bar");
string s = sb.ToString();
如果您希望在每次追加后换行,可以查看Ben Voigt的答案。
AppendLine
,这样它将插入适用于该特定StreamWriter
的换行序列,而不仅仅是Environment.NewLine
。例如,如果您打开与SMTP连接相关联的流,则可以将其NewLine
属性设置为“\r\n”,然后即使在Unix上,您也将获得有效的SMTP握手。 - Ben VoigtStringBuilder sb = new StringBuilder();
sb.AppendLine("First line");
sb.AppendLine("Second line");
sb.AppendLine("Third line");
First line
Second line
Third line
在Linux中会使用\n
,而不是\r\n
。
StringBuilder sb = new StringBuilder();
对于多行文本,我发现最好的方法是这样做:
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);
只需为StringBuilder类创建一个扩展:
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