Morning,一早写了 N 多的 String.Format 忽然想起了这个历史遗留的问题如题所述,假如 System.String.Format(string format, object arg) 中 
参数 format 本身也包含 { 或者 } 怎么办?有没有转义符支持?例如,常见的js脚本,// how to escape the { & } ?
string script = String.Format(@"window.onload = function() { alert(""{0}""); }", "Hello world!"); // -> System.FormatException: 输入字符串的格式不正确。any tips?thx in advance.

解决方案 »

  1.   

    用两个{ 可以输出string str = string.Format("he is {0} and {{或者}}", "ustbwuyi");
    Response.Write(str);
      

  2.   

    @ustbwuyi~i f u~u're right, thx.
      

  3.   

    用{{和}}转义很多地方都是用这种方式进行转义的比如前面加了@的字符串里,"是用""来转义的
    正则表达式Replace的时候,用$$对$进行转义比较特殊的转义方法,只见过DateTime的ToString方法里,是用''包含",也就是'"'这种方式对"进行转义的
      

  4.   

    楼上的朋友:string script = String.Format(@"{{0}}", "Hello world!"); 这样能够实现?if(script == "Hello world!")
      你对
    else
      这样转也没用啊或者如何实现楼主想要实现的?
      

  5.   

    我来接分,这样好像就行了:
    string test = "{0}";
    string script= String.Format(@test, "Hello world!");Label1.Text = script;
      

  6.   

    又试了一下,不用@也是一样的string test = "{0}";
    string script= String.Format(test, "Hello world!");Label1.Text = script;
      

  7.   

    郁闷,偶尔记得 SQL 单引号是用 两个单引号 转义的
      

  8.   

    luomingchao完全不知道这位同志在这里自言自语什么……
      

  9.   

    string script = String.Format("window.onload = function() {{ alert(\"{0}\"); }}", "Hello world!");这栗就可以了吧看在100分的份上,我做了半个小时的实验(其实感觉很简单的,就是试来试去)发现楼主的问题,也许是:{0}是用来替换的,当然不能用{{ }},而外面的{一定要用{{,否则不符合格式"要用\"
      

  10.   

    Ivony(授人以鱼不如授人以渔,上海谋生)可能我的表达方式不对,我只是在思考这个问题,感觉不难,就想试试.请谅解一下.学习中
      

  11.   

    同意lxcnn(过客) ( ) 的观点
      

  12.   

    Ivony(授人以鱼不如授人以渔,上海谋生) ( ) 信誉:100  2007-07-18 11:30:53  得分: 0  
     
     
       luomingchao完全不知道这位同志在这里自言自语什么……
      
     
    同意
      

  13.   

    终于在 MSDN 中将这一主题给翻出来了复合格式化 转义大括号 
    http://msdn2.microsoft.com/zh-cn/library/txafckwd(VS.80).aspx