C#字符串格式化和填充
看起来这应该是直截了当的,但我无法做到正确。 我查看了http://idunno.org/archive/2004/14/01/122.aspx以供参考。
示例:我想打印一个double值表,每个double输出具有3个十进制精度,并占用10个空格(左对齐)。 从概念上讲,我尝试过这样的东西,但它只适用于精确的OR填充,而不是两者:
foreach(line in lines) { foreach (double val in line) { Console.Write("{0:0.000,-10}", val); } Console.WriteLine() }
更新:我可以在非常简单的场景中使用padleft / padright,如果我有更复杂的输出它变得不是很简洁。 是否有类似于sprintf的东西?
尝试
double d = 3.14; Console.WriteLine("{0,10:0.000}", d);
PS:看看这篇文章作为字符串格式的入门。 此外, string.Format
应该允许你做sprintf所做的一切 – 实际上更多……你还想做什么?
有用
|{0,-10:0.00}| => |87,87 | - With "-"
|{0,-10:0.00}| => |87,87 | - With "-"
=> padRight
|{0,10:0.000}| => | 87,878| - Without "-"
|{0,10:0.000}| => | 87,878| - Without "-"
=> padLeft
|{3,-10:0.###}| - ###
|{3,-10:0.###}| - ###
– 只有在有意义(不是0)时才打印小数后面的数字“,”:87,8000 => 87,8