c#stringbuilder tostring双引号问题

时间:2013-02-11 18:38:28

标签: tostring stringbuilder ansi-escape

将字符串从stringbuilder转换为字符串时出现问题。 该问题与this issue类似,但略有不同:

这是我简化的代码:

StringBuilder sb = new StringBuilder();
sb.Append("\"");
sb.Append("Hello World");
sb.Append("\"");

string test = sb.ToString();

现在在调试器中,sb值为:

"Hello World"

在调试器中,测试字符串值更改为:

\"Hello World\"

当将测试字符串值返回给浏览器时,velue仍然是STILL转义:

\"Hello World\"

我尝试过使用字符串替换:

test = test.Replace("\"", "");

没有运气,我尝试添加ASCII字符而不是\"而且我也尝试过不同的追加

sb.Append('"');

所有这些都没有运气。有人可能会指出我正确的方向,为什么我仍然得到逃脱角色以及如何摆脱它。

感谢并感谢任何意见。

3 个答案:

答案 0 :(得分:1)

好吧,在WCF中,stringBuilder会自动添加转义引号。这意味着你无法摆脱这种局面。我也是这样做的。我试图返回一个字符串,我应该返回一个序列化的JSON对象。

答案 1 :(得分:0)

我没有看到你描述的行为。使用反斜杠转义双引号应该有效。以下代码片段

        var sb = new StringBuilder();
        sb.Append("Ed says, ");
        sb.Append("\"");
        sb.Append("Hello");
        sb.Append("\"");
        Console.WriteLine(sb.ToString());
        foreach (char c in sb.ToString()) Console.Write(c + "-");
        Console.ReadKey();

产生

Ed says, "Hello"
E-d- -s-a-y-s-,- -"-H-e-l-l-o-"-

如果在字符串的最终显示中得到实际的反斜杠字符,那么可能会在StringBuilder和ToString代码之后添加一些字符。

答案 2 :(得分:0)

您可以在字符串前使用逐字字符串文字“@”,然后输入两次引号。这将删除在字符串序列中使用转义的用法:)

StringBuilder sb = new StringBuilder();
sb.Append(@"""");
sb.Append("Hello World");
sb.Append(@"""");

string test = sb.ToString();