C#中string.Format输出内容中含有花括号的解决方法

原创 Laughing  2018-10-04 10:05  阅读 346 次 评论 0 条

问题再现

今天在开发的时候,遇到了需要传递session的地方,我们这边是用过formstate传递的,如下:

  1. argumentString = string.Format("{FORMSTATE~dwbh}='{0}'&{FORMSTATE~ssbm}='{1}'&{FORMSTATE~year}='{2}'&{FORMSTATE~month}='{3}'&{FORMSTATE~zclb}='{4}'&{FORMSTATE~zcbh}='{5}'", hsdw, ssbm, year, month, zclb, zcbh);  

问题分析

因为花括号字符是拿来做填充检测的(比如{0}表示首个子串),函数并不知道我们最外面的花括号是文本内容,结果就解析失败了。

问题解决

细想一下微软在提供string.Format方法时,不会没有考虑到花括号问题,就像文本内双引号内容我们用 \" 表示,查了一下果然有代替表示方法,用两个连在一起的“{{”表示“{”,右花括号也同理,所以得到最终解决方案:

  1. argumentString = string.Format("{{FORMSTATE~dwbh}}='{0}'&{{FORMSTATE~ssbm}}='{1}'&{{FORMSTATE~year}}='{2}'&{{FORMSTATE~month}}='{3}'&{{FORMSTATE~zclb}}='{4}'&{{FORMSTATE~zcbh}}='{5}'", hsdw, ssbm, year, month, zclb, zcbh);  
本文地址:https://www.lisen.me/csharp-string-format-contains-brace.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!
NEXT:已经是最新一篇了

发表评论


表情