如何更改C#StringBuilder.AppendLine行结尾?

时间:2019-04-17 14:12:48

标签: c# stringbuilder line-endings

我在C#中有一个旧应用程序,并使用StringBuilder.AppendLine添加带有字符串的行,然后计算该字符串的校验和。 到目前为止,它始终在Windows桌面/ Windows CE上运行,因此行结尾始终为\r\n

现在,我需要使其在linux / mono上完全相同。但是随后AppendLine仅添加了\n而不是\r\n

所以我必须像在Windows上一样将相同的行结尾添加到stringbuilder。但是如何?

s.Append("\r\n");

似乎没有用。

s.Append(13);
s.Append(10);

也不做这项工作。

2 个答案:

答案 0 :(得分:0)

您无法更改StringBuilder使用的值。 source使用Environment.NewLine,在Linux系统上将为\n。没有过载。您将必须实现自己的方法,或者像s.Append("13\r\n");

那样追加
[System.Runtime.InteropServices.ComVisible(false)]
        public StringBuilder AppendLine(string value) {
            Contract.Ensures(Contract.Result<StringBuilder>() != null);
            Append(value);
            return Append(Environment.NewLine);
}

答案 1 :(得分:-1)

const string LineEnd = "\r\n";
s.Append(LineEnd);

也在unix / linux上以Windows样式添加行尾。