【发布时间】:2020-01-23 15:10:23
【问题描述】:
从这个 C# 示例开始:
string myStringFormat = "I want to surround string {0} with {{ and }}";
string myStringArgs = "StringToSurround";
string myFinalString = string.Format(myStringFormat, myStringArgs);
我想知道是否有一种快速简单的方法来区分转义字符/序列和花括号/方括号的参数。
我问这个的原因是:
+] 我想提供一些日志记录功能,我不想要求用户了解双花括号/方括号转义规则
+] 我想在性能要求上做这个区分的速度非常快
目前我能想到的唯一解决方案是扫描字符串以查找花括号/括号并对后续字符进行一些检查(数字解析)。可能正则表达式会有所帮助,但我找不到在这种情况下使用它们的方法。
顺便说一句,我想达到的最终情况是允许用户这样做而不会出现异常:
string myStringFormat = "I want to surround string {0} with { and }";
string myStringArgs = "StringToSurround";
//string myFinalString = string.Format(myStringFormat, myStringArgs); throwing exception
string myFinalString = MyCustomizedStringFormat(myStringFormat, myStringArgs);
编辑:
抱歉,“环绕”一词很棘手且具有误导性,请考虑以下示例:
string myStringFormat = "I want to append to string {0} these characters {{ and }}";
string myStringArgs = "StringToAppendTo";
string myFinalString = string.Format(myStringFormat, myStringArgs);
给出输出
我想追加到字符串 StringToAppendTo 这些字符 { 和 }
【问题讨论】:
-
string myStringFormat = "I want to surround string {{{0}}} with { and }";- 三重{{{..}}}。这里{{代表普通{,最后一个{代表字符串插值/格式化。 -
必须是
{和}吗?如果您选择另一个不太可能出现的标识符(如[[和]]),您可以在将其交给您的字符串格式之前运行string.Replace。 -
让我直截了当:您希望用户编写 {0} 和 {a},但只有 {0} 应该被转换?
-
Bizhan,是的,你是对的。
-
使用另一个字符
标签: c# string formatting escaping