Console.WriteLine字符串格式不输出预期结果

时间:2014-05-21 21:39:49

标签: c# string-formatting console.writeline

Console.WriteLine( "Year{0,20}", "Amount on deposit" );

输出:Year Amount on deposit

根据我的理解,16个空格应该跟“年”一词。但是,正如你所看到的那样,情况并非如此。这个词后面只有4个空格。代码的解释方式是否与我理解的方式不同?

感谢。

6 个答案:

答案 0 :(得分:2)

实际上有三个空格。添加符号以帮助您了解正在发生的事情:

Console.WriteLine("#Year#{0,20}#", "Amount on deposit");

输出:

#Year#   Amount on deposit#

字符串“存款金额”占用20个空格 - 实际文本为17个,填充前为3个字符。正如this link所解释的那样,这就像正确对齐一样。

答案 1 :(得分:0)

20代表对齐。所以你的总字符串大小将是20个字符。

所以“存款金额”= 17个字符+ 3个字符填充= 20

请参阅Composite Formatting

答案 2 :(得分:0)

间距适用于替代品。间距为20 - <length of string>

答案 3 :(得分:0)

要在年后获得16个空格的输出,您可以将所拥有的内容转换为

Console.WriteLine("{0,-20}Amount on deposit", "Year");

这将创造一个20个字符的空白空间&#34;存款金额&#34;,&#34;年&#34;投入。

答案 4 :(得分:0)

我认为这是您正在寻找的,而不使用任何格式说明符:

左对齐:

Console.WriteLine( "{0}{1}", year.ToString().PadRight(20,' '), "Amount on deposit" );

右对齐:

Console.WriteLine( "{0}{1}", year.ToString().PadLeft(20,' '), "Amount on deposit" );

所以左对齐版本将输出年份,然后是16个空格:

|1994                |

右对齐版本将输出16个空格,然后是年份:

|                1994|

答案 5 :(得分:0)

以下内容将打印Amount on deposit在20个charactar空间中右对齐

Console.WriteLine( "Year{0,20}", "Amount on deposit" );
Result:
"Year   Amount on deposit"

如果你想让它左对齐,请使用减号:

Console.WriteLine( "Year{0,-20}", "Amount on deposit" );
Result
"YearAmount on deposit   "