StringBuilder.ToString()在字符串的开头和结尾添加'\'字符

时间:2010-08-23 21:35:10

标签: c# stringbuilder

StringBuilder.ToString()在字符串的开头和结尾添加'\'字符。

为什么会这样?

在调用.ToString()之前,字符串没有'\'字符。

3 个答案:

答案 0 :(得分:18)

你在考虑这些反斜杠吗?

Example screenshot showing backslashes in the Watch window

如果是这样,你误读了输出:反斜杠实际上不在字符串中。它们仅在此处显示,以使表示根据C#语法有效。例如,如果要使用Console.WriteLine输出字符串,则不会有反斜杠。

公平地说, 不一致。 StringBuilder的调试视图没有反斜杠,而是字符串的调试视图。

答案 1 :(得分:2)

StringBuilder除了您附加的字符外,不会添加任何字符。也许您正在查看由字符串构建器创建的字符串的Debug视图,并且characters which may need to be escaped在它们前面有反斜杠(\),以方便复制调试输出。

\字符实际上不在字符串数据本身中,而是字符串的显示的一部分。

编辑:此处是您可以投放的测试

private static void TestStringBuilder()
{
    StringBuilder builder = new StringBuilder();
    builder.Append(@"""saoetuhasoethuasteuhasoetnuh""");
    foreach (char c in builder.ToString())
    {
        System.Diagnostics.Debug.Assert(c != '\\', "EPIC STRINGBUILDER FAIL");
    }
}

答案 2 :(得分:1)

你在StringBuilder中有什么文字?

以下代码只是为我写了“你好”

var sb = new StringBuilder();
sb.Append("hello");
var test = sb.ToString();
Console.WriteLine(test);

我错过了什么吗?