String.Format 源字符串包含大括号的小问题


在使用String.Format()的过程中,一直没有遇到这种类型的问题,直到在写一个小sample的过程中,需要动态生成一段javascript代码并且通过ScriptManager.RegisterCliemtScriptBlock方法将其注册到前台,这里使用String.Format来区分动态和静态部分,并且生成最终的脚本代码。

在编程中发现带有“{”和“}”符号的脚本代码在String.format()过程中会报错,提示输入字符串不正确。反复检查了javascript,并没有什么可疑的地方。后来通过查询一些资料,由于String.Format()通过检测“{”,“}”符号来判断,需要参数字符串插入的位置,如果你继续在源字符串中使用这个字符时,可能造成混淆(你可以将其当做是关键字),就像你需要在字符串中加入双引号时,同样需要使用转义字符。 所以在实际开发中,你需要吧”{“和”}“字符以”{{“和”}}“代替。

很小的一个问题,可能是个人编程经验不足,贻笑大方,这里写下来作为自己的提醒。

例子:

  1. public static string Script = @"function Yes() {{  
  2.           var back = document.getElementById('wholePage');  
  3.           back.parentNode.removeChild(back);  
  4.           var message = document.getElementById('messageBox');  
  5.           message.parentNode.removeChild(message);{0}}}”;  

另外一个, 如果你的字符串中含有引号,需要额外再加上一个引号才可以正常显示,即“”代替”, 例如:

string script="function A() {var text=""""}";  

通过RegisterCliemtScriptBlock方法可以注册为function A() {var text="";}

 

 

相关内容