stringbuilder中的换行符

问题描述 投票:80回答:8

如何在StringBuilder中添加新行(\ n \ r)字符?

c# stringbuilder
8个回答
119
投票

我会利用Environment.NewLine Property

就像是

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的答案。


72
投票

22
投票

另外,使用StringBuilder.AppendLine方法。


4
投票

它会在Linux中追加\n而不是\r\n


3
投票

使用“字符串”构建器追加行内置函数

StringBuilder sb = new StringBuilder();
sb.AppendLine("first line ");
sb.AppendLine("Second  line ");
sb.AppendLine("third  line ");

产量

第一行第二行第三行


1
投票

对于多行,我发现最好的方法是这样做:

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

通过这种方式,您不必使用多次重复的Environment.NewLine或AppendLine()来混淆屏幕。它也不会像记住键入它们那样容易出错。


1
投票
StringBuilder sb = new StringBuilder();

你可以使用sb.AppendLine()或sb.Append(Environment.NewLine);


0
投票

为什么不直接为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
© www.soinside.com 2019 - 2024. All rights reserved.