将字符串从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('"');
所有这些都没有运气。有人可能会指出我正确的方向,为什么我仍然得到逃脱角色以及如何摆脱它。
感谢并感谢任何意见。
答案 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();