【问题标题】:String.Format custom parameter placeholdersString.Format 自定义参数占位符
【发布时间】:2018-01-24 16:09:25
【问题描述】:

我有一个字符串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 + "}");
}

我想知道是否有更好的方法?有没有办法可以定义参数占位符的格式?

【问题讨论】:

  • 您可以提供“外部”{} 作为参数
  • 为什么原来的 str1 开头有双括号?它是从您无法控制的地方提供给您的吗?
  • @Mike,没错。

标签: c# string format string.format


【解决方案1】:

有没有一种方法可以定义参数占位符的格式?

没有。

不知道有没有更好的办法?

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

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

您应该使用的表达式是{{(\d+)}},可以替换为{$1}。亲身体验here

【讨论】:

    猜你喜欢
    • 2022-12-21
    • 1970-01-01
    • 2013-12-12
    • 2015-08-14
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多