C#中,当字符串常量带@前导的时字符的转义

C# 中使用类似 {0}, {1:yyyy-MM-dd} 这样的格式占位符,如果被格式化字符串本身包含 { 或者 } 怎么办呢?答案是:用两个 { 或者 }连写表示单个。

例如

string  str1  =  String.Format( " {{Hello}}, {0}, Now is {{{1:yyyy-MM-dd HH:mm:ss}}} " " Jinglecat " , DateTime.Now);  //  {Hello}, Jinglecat, Now is {2007-07-18 23:06:35} 
        
// string str2 = String.Format("{Hello}, {0}, Now is {{1:yyyy-MM-dd HH:mm:ss}}", "Jinglecat", DateTime.Now);  //  --> System.FormatException: 输入字符串的格式不正确。

事实上,很多情况下带特殊含义的字符都是这样转义的:
如,

C#  中,当字符串常量带 @  前导的时候,用两个 " 连写表示一个 " (半角双引号)
 string str3  =  @"My UserName  is  ""Jinglecat"".";  //  My UserName  is  "Jinglecat". 
        
// string str4  =  @"My UserName ' s "Jinglecat""; // error CS1002: 应输入 ;
        //string str5 = @"My UserName
' s /"Jinglecat/"";  //  error CS1002: 应输入 ;


SQL 字符串常量,用两个 ' 连写表示一个 ' (半角单引号)

DECLARE   @str6   varchar ( 100 )
SET   @str6   =   ' My UserName is  '' Jinglecat '' . '  
PRINT   @str6   --  My UserName is 'Jinglecat'.


正则表达式中用,两个 $ 连写表示一个 $  (dollar)

 

我在c#中用正则表达式写了个关于后缀为.dat或者.txt文件名的判断是这样的:

Regex regEx = new Regex(@"/b/w{1}:(//([^//:*?""<>|]+|([^//:*?""<>|]+/s*)+[^//:*?""<>|]+))+(/.dat|/.txt)/b");

这其中就用到了""的转义,当时光想这个就想得我头疼了,这个"符号还不知道怎么处理!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值