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# 

                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值