我是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}上设置固定宽度?
答案 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)