将动态数字格式插入内插字符串
Insert dynamic number format into interpolated string
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 的 似乎是去这里的合理方式:
Console.WriteLine($"{price.ToString(format)}\t{freebie.ToString(format)}");
Howwie 的 似乎是去这里的合理方式:
Console.WriteLine($"{price.ToString(format)}\t{freebie.ToString(format)}");
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 的
Console.WriteLine($"{price.ToString(format)}\t{freebie.ToString(format)}");
Howwie 的
Console.WriteLine($"{price.ToString(format)}\t{freebie.ToString(format)}");