控制台.WriteLine字符串格式没有输出预期的结果

本文关键字:结果 输出 WriteLine 字符串 格式 控制台 | 更新日期: 2023-09-27 18:04:26

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

输出:Year Amount on deposit

据我理解,"Year"后面应该有16个空格。然而,正如你所看到的,情况并非如此。单词后面只有4个空格。代码的解释方式是否与我理解的不同?

谢谢。

控制台.WriteLine字符串格式没有输出预期的结果

实际上有三个空格。添加一个符号来帮助你理解发生了什么:

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

#Year#   Amount on deposit#

字符串"Amount on deposit"占用了20个空格-实际文本占用了17个空格,并且在它之前填充了3个字符。就像右对齐一样,这个链接解释了

20表示对齐。所以你的总字符串长度将是20个字符。

所以"Amount on deposit" = 17个字符+ 3个字符padding = 20

参见复合格式

空格应用于替换。所以空格是20 - <length of string>

如果要得到一年之后有16个空格的输出,您可以将已有的内容反转为

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

这将在"Amount on deposit"之前创建一个20个字符的空白空间,其中"Year"将被放入。

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

左侧调整:

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|

以下命令将以20个字符的间距右对齐打印Amount on deposit

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   "