如何将反斜杠双引号替换为普通双引号?

5

我在一个简单的替换问题上遇到了困难,需要一个好的解决方案。背景:这是一个用\"编码的xml字符串,需要将其替换为",以便使用serializer.Deserialize进行反序列化。

我想要将反斜杠双引号替换为一个双引号,例如字符串 " \"hello\" ",使其变成 " "hello" "。由于文本很长,因此不可能删除反斜杠。感谢您的建议。 我认为应该是

string s= "\" teetete \"";
string t;
t = s.Replace("\"", @"""");

正则表达式替换? - Callum Linington
3
您的示例字符串中不包含反斜杠,但这个有:string s = "\\\" teetete \\\""; - Tim Schmelter
我强烈怀疑你正在使用调试器,但是没有更多的上下文很难确定。如果它实际上是XML,我不会一开始将其处理为纯字符串。 - Jon Skeet
谢谢您的回复,现在它可以工作了。是调试器让我感到困惑,它显示了"。 - joakimja
3个回答

8

你的示例字符串中不包含任何反斜杠,你只是用它来掩盖双引号。这个字符串在开头和结尾各有一个反斜杠:

string s = "\\\" teetete \\\"";

如果您想用双引号替换它:

string t = s.Replace("\\\"", "\"");

你必须在调试器中查看放大镜,才能看到字符串的真实值:
请看以下链接中的图片:enter image description here 请看以下链接中的图片:enter image description here

0

不清楚你想做什么,但听起来你有一个包含双引号字符的 XML 字符串(在调试器中显示为 \"),你需要将其替换为 " 以便让 XML 解析器理解它。在这种情况下,简单调用 .Replace() 可能就足够了(尽管我想实际上可能需要使用更复杂的方法来解决一些边缘情况)。


0

这实际上并没有使用\"进行编码。它只是一个字符串,其内容为" teetete "。为了显示或编译该字符串,您必须转义引号,这就是为什么您有:

string s = "\" teetete \"";

一个包含反斜杠引用的字符串,即\",实际上看起来像这样:

string s = "\\\" teetete \\\"";

也就是说,一个 \\ 代表一个字面上的 \\" 代表一个字面上的 "。如果你想要替换 那个字符,那么几乎就是你写的内容了:
string t = s.Replace("\\\"", "\"");

这将把字符串中的任何\"转换为",我猜这实际上是你想要的,除非你要将其打印到一些VB.NET代码中,在这种情况下,"\"\""更合适。


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