今天在作項目時,碰到一個很奇怪的問題,我使用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