String.Format 自定义参数占位符

String.Format custom parameter placeholders

我有一个字符串var str1 = "My name is {{0}}, I am {{1}} years old." 我想使用 String.Format(str1, 'Pavel', 29);

当然不行,因为String.Format()希望参数占位符在单个大括号中

所以,我必须像这样修改我的字符串:

for (int i = 0; i < 10; i++)
{
    str1 = str1.Replace("{{" + i + "}}", "{" + i + "}");
}

不知道有没有更好的方法?有没有一种方法可以定义参数占位符的格式?

Is there a way I can define the format of the argument placeholders?

没有

I wonder if there is a better way of doing it?

您唯一的选择是创建与 string.Format 兼容的格式字符串。这就是你现在所做的。如果可以,请修复这些格式字符串的来源。

如果那不可能,我会选择使用正则表达式来使其更健壮、性能更好。

您应该使用的表达式是{{(\d+)}},可以用{}代替。查看实际效果 here