【问题标题】:How to pad multiple strings when writing to console so that part is aligned left and part is aligned right? [duplicate]写入控制台时如何填充多个字符串以使部分左对齐而部分右对齐? [复制]
【发布时间】:2019-06-10 20:53:03
【问题描述】:

我正在尝试一次将一行写入控制台和输出文件。我无法弄清楚如何填充字符串,以便字符串的左侧部分向左对齐,右侧部分在不同的 WriteLines 和 StreamWrite 之间类似地向右对齐。

我尝试使用 \t 如果字符串的左侧部分的长度与其他字符串相似,它会很好地工作,但如果字符串的长度差异太大,则会失败。

{
sw.WriteLine($"{now} {typeOfTransaction} \t ${transacAmnt:0.00} ${currentbalance:0.00}");
}


Expected Output:
6/10/2019 4:15:44 PM Added Money         $10.00 $10.00
6/10/2019 4:15:53 PM Cloud Popcorn A4    $10.00 $6.35
6/10/2019 4:15:55 PM Cash Out            $6.35 $0.00

Actual Output:
6/10/2019 4:15:44 PM Added Money         $10.00 $10.00
6/10/2019 4:15:53 PM Cloud Popcorn A4    $10.00 $6.35
6/10/2019 4:15:55 PM Cash Out    $6.35 $0.00

【问题讨论】:

  • @itsme86 建议的副本仅说明如何填充字符串。这个问题是关于列中的左/右对齐文本。回答这个问题不仅仅是填充字符串。列是否必须是固定宽度的,还是应该根据该列中最大的项目增长?
  • @Romen 如果将 2 个左/右填充字符串粘在一起,则会得到列。我不认为这是一个太大的飞跃。
  • @itsme86,我在评论的最后留下了一个问题,我希望 Brad L 也能看到。如果他们需要可变大小的列,那么 string.Format() 是不够的。已经选择了提供固定宽度列的答案,所以我想这就是他们所需要的。

标签: c#


【解决方案1】:

你可以使用String.Format + {index,length}

例如:

Console.WriteLine(String.Format("{0,-10}  {1,-20}  ${2,-10} ${3,-10}", DateTime.Now, "Added Money", 10.00,10.00));
Console.WriteLine(String.Format("{0,-10}  {1,-20}  ${2,-10} ${3,-10}", DateTime.Now, "Cloud Popcorn A4", 10.00,6.35));
Console.WriteLine(String.Format("{0,-10}  {1,-20}  ${2,-10} ${3,-10}", DateTime.Now, "Cash Out", 6.35,0.00));

【讨论】:

    猜你喜欢
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2012-11-26
    • 2012-11-28
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多