【问题标题】:How do I replace a backslash-double quote with just a double quote?如何用双引号替换反斜杠双引号?
【发布时间】:2018-02-13 00:06:19
【问题描述】:

我一直在努力进行简单的替换。并且需要一个好的解决方案。背景:它是一个用 \" 编码的 xml 字符串,这些字符串必须是 " 才能使用 serializer.Deserialize 对其进行反序列化。

我想用一个双引号替换反斜杠双引号,例如“\”hello\””这样的字符串,所以字符串是“”hello””。文本很长,因此无法删除反斜杠。感谢您的建议。 我认为应该是

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

【问题讨论】:

  • 正则表达式替换??
  • 您的示例字符串不包含反斜杠,这是:string s = "\\\" teetete \\\"";
  • 我强烈怀疑您正在查看调试器,但是如果没有更多上下文就很难判断。如果它实际上是 XML,我不会将它作为一个纯字符串来处理。
  • 感谢您的重播,现在它可以工作了。让我困惑的是调试器。表明 \”。

标签: c#


【解决方案1】:

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

string s = "\" teetete \"";

如果你想用一个双引号替换它:

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

您必须点击调试器中的放大镜才能看到字符串的实际值:

【讨论】:

    【解决方案2】:

    这实际上不是用" 编码的。这实际上是一个内容为" teetete " 的字符串。为了显示它或编译字符串,您必须转义引号,这就是您拥有的原因:

    string s = "" teetete "";
    

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

    string s = "\" teetete \"";
    

    也就是说,一组\ 用于文字" 用于文字"。如果你想更换,那么它几乎就是你写的:

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

    这会将您的字符串中的任何" 转换为",我猜这是您真正想要的,除非您将其打印到一些VB.NET 代码中,在这种情况下"""" 会更合适.

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-27
        • 2019-11-29
        • 2015-02-27
        • 1970-01-01
        • 2023-01-18
        • 1970-01-01
        • 1970-01-01
        • 2015-08-29
        相关资源
        最近更新 更多