【问题标题】:Why is \ character being doubled in my @ string?为什么我的 @ 字符串中的 \ 字符会加倍?
【发布时间】:2012-09-18 21:55:43
【问题描述】:
var phone = @"^\+(?:[0-9] ?){6,14}[0-9]$";

然后电话将等于^\\+(?:[0-9] ?){6,14}[0-9]$

我认为(并且我发现的示例似乎表明)@ 字符意味着要让我的字符串保持我的状态。为什么它会加倍 \ 以及如何阻止它?

【问题讨论】:

标签: c# string


【解决方案1】:

Visual Studio 调试器将显示它,就好像它被加倍一样,因为在 C# 中,\ 会在转义序列之前。别担心 - 你的字符串没有改变。

【讨论】:

    【解决方案2】:

    它只是看起来在调试检查器中被加倍了。

    请注意,检查器中显示的字符串不以@ 开头 - 它们显示了如果您要在没有@ 的情况下编写字符串,您将如何编写。这两种形式是等价的。

    如果您真的担心字符串的内容,请将其输出到控制台应用程序中。

    【讨论】:

      【解决方案3】:

      用另一种方式重申,比较

      var equal = @"^\+(?:[0-9] ?){6,14}[0-9]$" == "^\\+(?:[0-9] ?){6,14}[0-9]$"
      

      将永远是true。一样,

      var equal = @"\" == "\\";
      

      如果您使用文本可视化工具检查变量,您将看到纯非转义字符串,就像您声明它时一样 verbatim。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-05
        相关资源
        最近更新 更多