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