如何在动态字符串变量中转义大括号,它在String.Format中使用?

时间:2016-07-11 08:42:06

标签: c# string.format

如何在动态字符串变量中转义花括号,该变量在String.Format中使用?

修改1

我知道在知道字符串的值时如何处理这个问题。例如。

string someStringVar = "This is a random string {0}. Blah {{ Blah {{ Blah }}"

但是当我不知道字符串值时如何处理它。例如。

string someStringVar = GetValueFromXmlFile();

在上面的代码中,GetValueFromXmlFile方法可以返回一个字符串,其中包含一个有效的占位符,如{0},但是也可能包含不是占位符的{或}等字符?在这种情况下,如果没有转义有效占位符(如{0}?

),应该逃避{或}

1 个答案:

答案 0 :(得分:0)

您可以复制所有大括号,然后修复您不想转义的大括号:

var duplicateLeftCurlyBrackets = Regex.Replace(someStringVar, @"([^}]|^)}([^}]|$)", @"$1}}$2");
var duplicatedBothCurlyBrackets = Regex.Replace(duplicateLeftCurlyBrackets, @"([^{]|^){([^{]|$)", @"$1{{$2");
var result = Regex.Replace(duplicatedBothCurlyBrackets, @"{{([0-9]+)}}", @"{$1}");

你真的可以假设输入将始终采用从你的例子中看到的形式吗?