将动态格式插入插值字符串

时间:2016-09-29 13:44:06

标签: c# string-interpolation

C#6.0带来了由$

指示的这种漂亮的新格式化操作

而不是这样做

String lastName = "Doena";
String firstName = "DJ";

Console.WriteLine(String.Format("{1} {0}", lastName, firstName));

你可以这样做

Console.WriteLine($"{firstName} {lastName}");

但数字格式怎么样?如果我有这个怎么办:

Decimal price = 9999.95m;
Decimal freebie = 0;

const String format = "#,##0.##";

Console.WriteLine(String.Format("{0:" + format + "}\t{1:" + format + "}", price, freebie));

我试过了:

Console.WriteLine($"{price:"{format}"}\t{freebie:"{format}"}");

和此:

Console.WriteLine($"{price:{format}}\t{freebie:{format}}");

和此:

Console.WriteLine($"{price:format}\t{freebie:format}");

但是他们要么不编译,要么不带来希望的结果。

有什么想法吗?

修改 Howwie的answer似乎是合理的方式:

Console.WriteLine($"{price.ToString(format)}\t{freebie.ToString(format)}");

1 个答案:

答案 0 :(得分:3)

Howwie的answer似乎是合理的方式:

Console.WriteLine($"{price.ToString(format)}\t{freebie.ToString(format)}");