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

本文关键字:变量 String Format 动态 字符串 转义 | 更新日期: 2023-09-27 17:56:22

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

编辑 1

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

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

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

例如
string someStringVar = GetValueFromXmlFile();

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

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

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

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

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