Laughing
C#中string.Format输出内容中含有花括号的解决方法
10/04
本文最后更新于2021年04月27日,已超过1241天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
问题再现
今天在开发的时候,遇到了需要传递session的地方,我们这边是用过formstate传递的,如下:
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
方法时,不会没有考虑到花括号问题,就像文本内双引号内容我们用 \" 表示,查了一下果然有代替表示方法,用两个连在一起的“{{”表示“{”,右花括号也同理,所以得到最终解决方案:
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.xiangcaowuyu.net/java/csharp-string-format-contains-brace.html(转载时请注明本文出处及文章链接)
作品采用:
istat menu6序列号_木子网
谢谢分享