C#如何使用字符串插值设置修复字段宽度?

时间:2018-01-27 17:12:58

标签: c#

我是c#的新手,在这种情况下,我想在文本块中对齐文本列。 所以基本上我打算在收据上打印收据,它应该是这样的。

例如:

1 Dinner Set          $15.00
1 Hamburger Combo     $10.00

基本上,我想将收据的文本列对齐。由于食品名称长度因不同的食品而异。例如"晚餐套餐"和"汉堡组合"有不同的长度。因此,每当我使用下面的代码时,它都会像这样出现

1 Diner Set          $15.00
1 Hamburger Combo       $10.00

以下是代码:

    foreach (OrderItem ot in orderItemList)
    {
      x += $"\n{ot.Quantity} {ot.Item.Name}\t\t 
      ${ot.GetItemTotalAmnt().ToString("0.00")}\n";
    }

由于我没有硬编码每一行,有没有办法在{ot.Item.Name}上设置固定宽度?

2 个答案:

答案 0 :(得分:2)

只要您使用固定宽度的字体,请使用以下内容:

string.Format("{0,20}", ot.Item.Name)

逗号后面的值表示在结果字符串中使用了那么多字符空格。如果您使用以下(注意减号):

string.Format("{0,-20}", ot.Item.Name)

然后文本将在这些空格中右对齐。

答案 1 :(得分:0)

您可以使用字符串插值以与String.Format()相同的方式指定字段宽度和格式说明符。

x += $"\n{ot.Quantity} {ot.Item.Name,-20} ${ot.GetItemTotalAmnt():C}\n";

如果你不想硬编码20,只需使用最大Item.Name作为字段宽度。

var maxLength = orderItemList.Max(ot => ot.Item.Name.Length)