如何在动态字符串变量中转义花括号,该变量在String.Format中使用?
修改1
我知道在知道字符串的值时如何处理这个问题。例如。
string someStringVar = "This is a random string {0}. Blah {{ Blah {{ Blah }}"
但是当我不知道字符串值时如何处理它。例如。
string someStringVar = GetValueFromXmlFile();
在上面的代码中,GetValueFromXmlFile方法可以返回一个字符串,其中包含一个有效的占位符,如{0},但是也可能包含不是占位符的{或}等字符?在这种情况下,如果没有转义有效占位符(如{0}?
),应该逃避{或}答案 0 :(得分:0)
您可以复制所有大括号,然后修复您不想转义的大括号:
var duplicateLeftCurlyBrackets = Regex.Replace(someStringVar, @"([^}]|^)}([^}]|$)", @"$1}}$2");
var duplicatedBothCurlyBrackets = Regex.Replace(duplicateLeftCurlyBrackets, @"([^{]|^){([^{]|$)", @"$1{{$2");
var result = Regex.Replace(duplicatedBothCurlyBrackets, @"{{([0-9]+)}}", @"{$1}");
你真的可以假设输入将始终采用从你的例子中看到的形式吗?