今天在作项目时,碰到一个很奇怪的问题,我使用string.Format竟然报“输入的字符串格式有误”的错误,我调了好久,仍是不对,不明白错在哪里,后来仍是google了一下,原来我在字符串中出现了"{"字符。而"{"字符若出如今string.Format中是必需转义的,也就是要用两个"{{"表明一个"{",同时双下面把我查找到的解决方法的相关文章一同粘贴出来。
html
1、转义正则表达式
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: 输入字符串的格式不正确。ide
事实上,不少状况下带特殊含义的字符都是这样转义的:如,
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: 应输入 ;post
SQL 字符串常量,用两个 ' 连写表示一个 ' (半角单引号)
DECLARE @str6 varchar(100)
SET @str6 = 'My UserName is ''Jinglecat''.'
PRINT @str6 -- My UserName is 'Jinglecat'.google
正则表达式中用,两个 $ 连写表示一个 $ (dollar)url
原文连接:http://www.cnblogs.com/linyechengwei/archive/2009/11/17/1604509.htmlspa