如何在 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]+)}}", @"{}");
您真的可以假设输入始终采用示例中所见的形式吗?
如何在 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]+)}}", @"{}");
您真的可以假设输入始终采用示例中所见的形式吗?