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

How to escape curly brace in a dynamic string variable, which is used in String.Format?

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

编辑 1

我知道当字符串的值已知时如何处理。例如

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

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

string someStringVar = GetValueFromXmlFile();

在上面的代码中,GetValueFromXmlFile 方法可以 return 一个带有有效占位符(如 {0})的字符串,但也可以包含像 { 或 } 这样不是占位符的字符?在这种情况下,应该转义 { 或 } 而不转义像 {0} 这样的有效占位符吗?

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

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

您真的可以假设输入始终采用示例中所见的形式吗?