C# Console.WriteLine字符串格式未输出预期结果

C# Console.WriteLine字符串格式未输出预期结果,c#,string-formatting,console.writeline,C#,String Formatting,Console.writeline,输出:年度存款金额 据我理解,“年”一词后面应该有16个空格。但是,正如您所看到的,情况并非如此。单词后只有4个空格。代码的解释方式是否与我理解的不同 谢谢。20表示对齐。因此,字符串的总大小将为20个字符 所以“存款金额”=17个字符+3个字符填充=20 参见实际上有三个空格。添加一个符号以帮助您了解发生了什么: Console.WriteLine( "Year{0,20}", "Amount on deposit" ); 输出: Console.WriteLine("#Year#{0,20

输出:
年度存款金额

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


谢谢。

20表示对齐。因此,字符串的总大小将为20个字符

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


参见

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

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

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

字符串“存款金额”占用了20个空格——实际文本为17个,前面有3个字符的填充。正如所解释的,这类似于右对齐。

将间距应用于替换。因此,间距为
20-

要在一年后获得16个空格的输出,您可以将您拥有的空间反转为

Console.WriteLine(“{0,-20}存款金额”,“年”)


这将在“存款金额”之前创建一个20个字符的空白空间,而“年”将被放入其中。

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

左对齐:

#Year#   Amount on deposit#
Console.WriteLine( "{0}{1}", year.ToString().PadRight(20,' '), "Amount on deposit" );
右对齐:

#Year#   Amount on deposit#
Console.WriteLine( "{0}{1}", year.ToString().PadRight(20,' '), "Amount on deposit" );
因此,左对齐的版本将输出年份,后面是16个空格:

Console.WriteLine( "{0}{1}", year.ToString().PadLeft(20,' '), "Amount on deposit" );
右对齐版本将输出16个空格,然后是年份:

|1994                |

以下内容将在20个字符的空格中右对齐打印存款金额

|                1994|
如果要左对齐,请使用减号:

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

显然是这样。格式不适用于“Year”,而是适用于您传递的参数。我对C#很生疏,但我认为
{0,20}
的作用类似于通过左边填充迫使“存款金额”占用20个空格。我现在明白了。感谢大家的投入。:)