参考此链接
http://msdn.microsoft.com/en-us/library/b1csw23d.aspx
似乎String.Format方法无法在格式字符串参数中使用标签而不是索引。
.Net Framework是否有一些原生的语法或功能允许使用标签而不是0,1,...,N?
作为一个例子,这怎么可能:
Console.WriteLine(String.Format("{0}{1}{0}{1}", "foo", "bar"));
变得像这样:
Console.WriteLine(String.Format("{foo}{bar}{foo}{bar}",
new { foo = "foo", bar = "bar" }));
答案 0 :(得分:4)
菲尔·哈克(Phil Haack)写了一篇关于如何做到这一点的博客:
http://haacked.com/archive/2009/01/04/fun-with-named-formats-string-parsing-and-edge-cases.aspx
.NET中没有内置的方法来实现这一目标。
答案 1 :(得分:1)
没有办法:
仅以数字计算:
答案 2 :(得分:1)
参考:C#: String.Inject() - Format strings by key tokens
string myString = "{foo} is {bar} and {yadi} is {yada}".Inject(o);
它接受一个对象,IDictionary或HashTable,并用实例值替换属性name / key tokens。由于它在内部使用string.Format,因此它使用string.Format-like custom formatting。
.Net内部没有这样的实现。您可以使用 Custom formatting with ICustomFormatProvider Interface
格式项的语法如下:
{index[,length][:formatString]}
答案 3 :(得分:1)
从C#6开始,您可以使用Interpolated Strings:
string foo = "foo1";
string bar = "bar2";
Console.WriteLine($"{foo} {bar} {foo} {bar}");
将输出:
foo1 bar2 foo1 bar2