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

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

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

4

3 回答 3

10

Visual Studio 调试器会将其显示为双倍,因为在 C# 中,\ 将在转义序列之前。别担心 - 你的字符串没有改变。

于 2012-09-18T13:44:07.747 回答
4

看起来只是在调试检查器中翻了一番。

请注意,检查器中显示的字符串以开头@- 它们显示如果您要在没有@. 这两种形式是等价的。

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

于 2012-09-18T13:44:14.207 回答
1

以另一种方式重申,比较

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

永远都是true。一样,

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

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

于 2012-09-18T13:50:25.480 回答