加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 带花括号的String.Format

发布时间:2020-12-15 08:16:10 所属栏目:百科 来源:网络整理
导读:我们的低级日志记录库必须处理发送给它的各种日志消息. 其中一些消息包括花括号(作为文本的一部分),有些包含使用String.Format格式化为字符串一部分的参数 例如,此字符串可以是Logger类的输入: “参数:{Hostname}值:{0}” 使用正确的变量发送以用于格式化
我们的低级日志记录库必须处理发送给它的各种日志消息.

其中一些消息包括花括号(作为文本的一部分),有些包含使用String.Format格式化为字符串一部分的参数

例如,此字符串可以是Logger类的输入:

“参数:{Hostname}值:{0}”
使用正确的变量发送以用于格式化程序.

为了正确地做到这一点,我必须逃避不属于格式化的花括号(通过将它们加倍).

我想过用Regex做这件事,但是这并不像看起来那么简单,因为我不知道如何在花括号内部匹配这些字符串(String.Format未用于格式化目的).

另一个问题是Logger类应尽可能提高性能,开始处理正则表达式,因为其操作的一部分可能会妨碍性能.

有没有适当的和已知的最佳做法?

解决方法

只在一个正则表达式中执行此操作:
string input = "Parameter: {Hostname} Value: {0}";
input = Regex.Replace(input,@"{([^[0-9]+)}",@"{{$1}}");
Console.WriteLine(input);

输出:

Parameter: {{Hostname}} Value: {0}

这当然只有在没有任何参数包含数字但仍应使用{{}}进行转义的情况下才有效

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读