C#程序中转义大括号问题('{','}')

写一个用C#程序生成javascript脚本程序的代码,
在格式化字符串中,发现如果格式字符串中出现'{'或'}',程序可能导致异常.原因是C#格式化字符串中,{}对用来表示参数序号.搜索的MSDN得到如下解释:

-------------------------------------------------------------------------

转义大括号


左大括号和右大括号被解释为格式项的开始和结束。因此,必须使用转义序列显示文本左大括号或右大括号。在固定文本中指定两个左大括号
("{{") 以显示一个左大括号 ("{"),或指定两个右大括号 ("}}")
以显示一个右大括号
("}")。按照在格式项中遇到大括号的顺序依次解释它们。不支持解释嵌套的大括号。

解释转义大括号的方式会导致意外的结果。例如,考虑要显示一个左大括号、一个格式化为十进制数的数值和一个右大括号的格式项“{{{0:D}}}”。但是,实际是按照以下方式解释该格式项:

前两个左大括号 ("{{") 被转义,生成一个左大括号。

之后的三个字符 ("{0:") 被解释为格式项的开始。

下一个字符 ("D") 将被解释为 Decimal
标准数值格式说明符,但后面的两个转义大括号 ("}}") 生成单个大括号。由于得到的字符串 ("D}")
不是标准数值格式说明符号,所以得到的字符串会被解释为用于显示字符串“D}”的自定义格式字符串。

最后一个大括号 ("}") 被解释为格式项的结束。

显示的最终结果是字符串“{D}”。不会显示本来要格式化的数值。

在编写代码时,避免错误解释转义大括号和格式项的一种方法是单独显示大括号和格式项。也就是说,显示左大括号,再显示格式项的结果,然后显示右大括号。

http://msdn2.microsoft.com/zh-cn/library/txafckwd.aspx
-------------------------------------------------------------------------

可以看到,微软所给出的建议也不是一个好点子,按照“避免错误解释转义大括号和格式项的一种方法是单独显示大括号和格式项”这种说法,就是要我们把字符串拆散来输出,
这是比较恶心的,因为这样,我们对所输出的字符串就失去了整体的感觉,经常需要运行调试后,才能确定字符串输出格式是否正确。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值