如何在C#中使用字符串格式填充来对齐字符串列

时间:2017-03-06 03:36:20

标签: c# string string-formatting

我使用字符串格式填充来显示特定格式的列(即列之间的距离)。

String.Format("{0,5}{1,0}{2,-20}{3,0}",
                            ID,
                            ZIP,
                            State,
                            Flag);

适用于标准固定行长度。

012345IL     1
112345KS     0
212345CO     1
312345CA     1
412345IL     1
512345KS     0
612345CO     1
712345CA     1
812345IL     1
912345KS     0
1012345CO     1
1112345CA     1

但问题出现在ID变为两位数且最后一行移位时。 我期望的格式是

012345IL     1
112345KS     0
212345CO     1
312345CA     1
412345IL     1
512345KS     0
612345CO     1
712345CA     1
812345IL     1
912345KS     0
1012345CO    1
1112345CA    1

我尝试了padright和padleft,但没有解决问题,我对另一个有地址的字符串有同样的问题,当地址长度增加时,最后一列发生变化。有没有其他方法或内置C#函数来实现?

1 个答案:

答案 0 :(得分:1)

您的String.Format已正确格式化您的字符串。 {0,5}允许第一个参数使用5个字符。这将为您的行开头提供4个空格,用于单个数字ID,3个用于双位数字ID。也许这是你如何显示你的字符串的问题。

但是,您以所要求的格式显示的内容略有不同 试试这个:

string firstGroup = $"{ID}{ZIP}{State}";
String.Format($"{firstGroup,-13}{Flag}");