StringBuilder.ToString()
在字符串的开头和结尾添加'\'字符。
为什么会这样?
在调用.ToString()之前,字符串没有'\'字符。
答案 0 :(得分:18)
你在考虑这些反斜杠吗?
如果是这样,你误读了输出:反斜杠实际上不在字符串中。它们仅在此处显示,以使表示根据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);
我错过了什么吗?