C#字符串格式化和填充

时间:2010-01-07 09:13:45

标签: c# string string-formatting

似乎这应该是直截了当的,但我无法做到正确。我查看http://idunno.org/archive/2004/14/01/122.aspx作为参考。

实施例: 我想打印一个双值表,每个双输出具有3个十进制精度,并占用10个空格(左对齐)。从概念上讲,我尝试过类似的东西,但它只适用于精确的OR填充,而不是两者:

foreach(line in lines)
{
    foreach (double val in line)
    {
         Console.Write("{0:0.000,-10}", val);
    }

    Console.WriteLine()
}

更新:我可以在非常简单的场景中使用padleft / padright,如果我有更复杂的输出它变得不是很简洁。是否有类似于sprintf的东西?

2 个答案:

答案 0 :(得分:8)

尝试

double d = 3.14;
Console.WriteLine("{0,10:0.000}", d);

P.S:看看this article作为字符串格式的入门读物。另外,string.Format应该允许你做sprintf所做的一切 - 实际上更多......你还想做什么?

答案 1 :(得分:-1)

有用

|{0,-10:0.00}| => |87,87 | - With "-" => padRight

|{0,10:0.000}| => | 87,878| - Without "-" => padLeft

|{3,-10:0.###}| - ### - 只有在有意义(不是0)的情况下才会打印小数后面的数字“,”:87,8000 => 87,8