C#使用String.Format()方法时,出现异常"输入的字符串格式有误"的解决方法

     转载自:string.Format出现异常"输入的字符串格式有误"的解决方法

     项目调试时始终报错“输入的字符串格式有误”,苦苦寻找原因,终于定位到String.Format()方法,原来是在要用到转义字符时,没有进行转义。修改后能正确运行的代码如下:

  #region innerHTML GoogleMap 
     string innerHTML =

            "   <style type=\"text/css\">html{{height:100%}}                                                          " +
            "	 body{{height:100%;margin:0px;padding:0px}}                                                         " +
            "	 #container{{height:100%}}                                                                          " +
            "	 </style><script type=\"text/javascript\" src=\"http://maps.google.com/maps/api/js?sensor=false\">  " +
            "	 </script><body>                                                                                    " +
            "   <div id=\"container\"></div>                                                                          " +
            "	 <script type=\"text/javascript\">                                                                  " +
            "	                                                                                                    " +
            "   var myLatlng = new google.maps.LatLng({0},{1});                                                       " +
            "   var myOptions = {{zoom: 12,                                                                           " +
            "   	               center: myLatlng,                                                                    " +
            "   	               mapTypeId: google.maps.MapTypeId.ROADMAP                                             " +
            "   	             }};                                                                                    " +
            "   var map = new google.maps.Map(document.getElementById(\"container\"), myOptions);                     " +
            "   var marker = new google.maps.Marker({{position: myLatlng,map: map,title:\"{2}\"}});                   " +

            "   </script>";
            #endregion

            string innerText = String.Format(innerHTML, Jd, Wd, Title);
            Frm51ditu.obj_frm51ditu.WebBrowserOf51ditu.DocumentText = innerText;

一、转义字符

    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) 
二、String Formatting in C# 
 
 
 
 

猜你喜欢

转载自blog.csdn.net/zhangyuehua123/article/details/6876581
今日推荐