String.Format格式化字符串

其一、String.Format (String, Object, Object, Object,...) 将指定的 String 中的格式项替换为三个(及以上)指定的 Object 实例的值的文本等效项。

使用String.Format时想着简化代码,使代码更具可读性,然而今天使用的时候出现了一个错误,一直提示“输入的字符串格式有误”的错误,度娘找到了这篇文章,解决了我的问题。

文章链接:http://www.cnblogs.com/linyechengwei/archive/2009/11/17/1604509.html

 

原来我在字符串中出现了"{"字符。而"{"字符若出现在string.Format中是必需转义的,也就是要用两个"{{"代表一个"{"。

一、转义

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)

 

二、注意:转义的"{"需要用两个"{{";但是格式化替换的指定的 Object 实例的值所在的"{}"不需要两个,也就是:

{{"id":1,"name":"{0}"}}

posted @ 2016-05-06 15:54  章先生和陶小姐  阅读(532)  评论(0编辑  收藏  举报