StringBuilder ToString方法注入\n\r。

3
当我执行这个 .Net 代码时:
   var builder = new StringBuilder();
   builder.AppendLine("Line One");
   builder.AppendLine("Line Two");
   var result = builder.ToString();

result的值字面上是:

"Line One\r\nLine Two\r\n"

为什么.ToString()会将换行符转换为"\r\n"文本,有没有办法防止这种情况发生并使字符串实际上具有真正的(隐藏的)换行符?

7
你在哪里看到了“result”值? - Reed Copsey
1
"Line One\r\nLine Two\r\n" 没有问题。您尝试将 result 放入多行文本框了吗? - I4V
在Visual Studio调试器中,我“复制”了“result”的值并将其粘贴到记事本中,但实际的换行符被显示为\r\n字符。有趣的是,如果我相反地“复制”了“builder”的值,则它可以正确地粘贴到记事本中。 - CodeGrue
1
发生的情况是您复制了字符串文字结果。就像@I4V所说,尝试只输入Console.WriteLine(result); 如果您要创建一个具有换行符的字符串文字,则只需键入“Line One\r\nLine Two\r\n”。 - dko
1个回答

2
在调试器中它显示的是“转义字符”,也就是回车换行标准Windows EOL字符串。如果您将其打印到命令行或文件中,您将获得实际的新行。在C#中,所有转义字符都以“\”开头。因此,\r\n中的\r是回车符,\n是换行符或新行。 http://en.wikipedia.org/wiki/Newline 另外,在C#中正确编码这个字符串。
   StringBuilder builder = new StringBuilder();
   builder.AppendLine("Line One");
   builder.AppendLine("Line Two");
   String result = builder.ToString();

这也是表达同样意思的另一种方式。
String result = "Line One\r\nLine Two\r\n";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接