【问题标题】:c# replace \" charactersc#替换\"字符
【发布时间】:2011-06-08 02:08:57
【问题描述】:

我收到了一个 XML 字符串,我试图通过 XmlReader 对其进行解析,并且我试图去除 \" 字符。

我试过了

.Replace(@"\", "")
.Replace("\\''", "''")
.Replace("\\''", "\"")

加上其他几种方式。

有什么想法吗?

【问题讨论】:

    标签: c# replace special-characters


    【解决方案1】:

    你是这样尝试的吗:

    string text = GetTextFromSomewhere();
    text.Replace("\\", "");
    text.Replace("\"", "");
    

    ?如果是这样,那就是问题所在 - Replace 不会更改 original 字符串,它会返回一个 new 字符串并执行替换......所以你想要:

    string text = GetTextFromSomewhere();
    text = text.Replace("\\", "").Replace("\"", "");
    

    请注意,这将替换每个反斜杠每个双引号字符;如果您只想替换 pair “反斜杠后跟双引号”,您只需使用:

    string text = GetTextFromSomewhere();
    text = text.Replace("\\\"", "");
    

    (正如 cmets 中提到的,这是因为字符串在 .NET 中是不可变的 - 一旦您以某种方式获得了一个字符串对象,该字符串将始终具有相同的内容。您可以分配一个对 不同的引用 字符串当然是一个变量,但这实际上并没有改变现有字符串的内容。)

    【讨论】:

    • 这是一个常见的错误,但经常犯。在 C# 中,string 是不可变的,如果您对其进行更改,例如使用 Replace 方法,它将始终返回一个新字符串。
    • 另请注意,调试器在显示字符串时会对其进行转义。这些多余的反斜杠当然不能被.Replace() 删除。
    【解决方案2】:

    在 .NET Framework 4 和 MVC 中,这是唯一有效的表示:

    Replace(@"""","")
    

    在任何组合中使用反斜杠都不起作用...

    【讨论】:

      【解决方案3】:

      试试这样:

      Replace("\\\"","");
      

      这会将出现的\" 替换为空字符串。

      例如:

      string t = "\\\"the dog is my friend\\\"";
      t = t.Replace("\\\"","");
      

      这将导致:

      the dog is my friend
      

      【讨论】:

      • 另外你应该习惯 String.Empty 而不是 ""
      • @VoodooChild - 不,这正是反斜杠的正确数量。请参阅我的代码示例以获得证明。
      • meh on string.empty。这是相同的区别。
      • @kurtnelle - 我更喜欢“”,使用它没有任何问题。我认为它比 string.empty 更简洁。
      • 谢谢!你的例子很有帮助
      【解决方案4】:
      \ => \\ and " => \"
      

      所以Replace("\\\"","")

      【讨论】:

        【解决方案5】:

        这些字符出现在哪里?如果您检查例如记事本中的 XML 数据,您会看到它们吗?或者您在调试器中检查 XML 数据时是否看到它们。如果是后者,它们只是 " 字符的转义字符,因此是实际 XML 数据的一部分。

        【讨论】:

          【解决方案6】:

          替换(@"\""", "")

          您必须在逐字字符串中使用双双引号 escape double-quotes

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-04-01
            • 2010-12-06
            • 2013-05-26
            • 1970-01-01
            • 1970-01-01
            • 2012-09-02
            • 2014-04-11
            相关资源
            最近更新 更多