【问题标题】:How to align string column using string format padding in C#如何在 C# 中使用字符串格式填充对齐字符串列
【发布时间】:2017-03-06 21:58:51
【问题描述】:

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

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#函数来实现?

【问题讨论】:

  • 一个更好的主意可能是字符串计数并使用空格而不是填充。因此,如果 ID 大小增加,您下一列的位置仍然相同。
  • @MohitShrivastava 你能用你的概念原型回答吗?
  • 你如何显示你的结果?因为我在每个结果前面都看到了填充字符串(空格),这使它们成为你想要的东西
  • 填充 0 不会影响我的格式的输出

标签: c# string string-formatting


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多