您的位置:首页 > 编程语言 > C#

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

2011-10-15 18:29 1096 查看
转载自:string.Format出现异常"输入的字符串格式有误"的解决方法项目调试时始终报错“输入的字符串格式有误”,苦苦寻找原因,终于定位到String.Format()方法,原来是在要用到转义字符时,没有进行转义。修改后能正确运行的代码如下:
#regioninnerHTMLGoogleMap
stringinnerHTML=

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

"</script>";
#endregion

stringinnerText=String.Format(innerHTML,Jd,Wd,Title);
Frm51ditu.obj_frm51ditu.WebBrowserOf51ditu.DocumentText=innerText;
一、转义字符C#中使用类似{0},{1:yyyy-MM-dd}这样的格式占位符,如果被格式化字符串本身包含{或者}怎么办呢?答案:用两个{或者}连写表示单个。
stringstr1=String.Format("{{Hello}},{0},Nowis{{{1:yyyy-MM-ddHH:mm:ss}}}","Jinglecat",DateTime.Now);
//{Hello},Jinglecat,Nowis{2007-07-1823:06:35}
stringstr2=String.Format("{Hello},{0},Nowis{{1:yyyy-MM-ddHH:mm:ss}}","Jinglecat",DateTime.Now);
//System.FormatException:输入字符串的格式不正确。
事实上,很多情况下带特殊含义的字符都是这样转义的:如C#中,当字符串常量带@前导的时候,用两个"连写表示一个"(半角双引号)
stringstr3=@"MyUserNameis""Jinglecat"".";//MyUserNameis"Jinglecat".
//stringstr4=@"MyUserName's"Jinglecat"";//errorCS1002:应输入;
//stringstr5=@"MyUserName's\"Jinglecat\"";//errorCS1002:应输入;
SQL字符串常量,用两个'连写表示一个'(半角单引号)
DECLARE@str6varchar(100)
SET@str6='MyUserNameis''Jinglecat''.'
PRINT@str6--MyUserNameis'Jinglecat'.
正则表达式中用,两个$连写表示一个$(dollar)
二、StringFormattinginC#

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐