3
for (int iCount = 0; iCount < oForm.LineItems.Count; iCount++)
           {

// cartDetails 在这里是一个字符串生成器。

     cartDetails.Append(String.Format("{0:0}", oForm.LineItems[iCount].Quantity));
     cartDetails.Append(String.Format("{0:0.00}", oForm.LineItems[iCount].Price));
     cartDetails.Append(String.Format("{0:0.00}", oForm.LineItems[iCount].ExtendedPrice));

     //cartDetails.Append(string.Format("{0,10:#,##0.00}", oForm.LineItems[iCount].Price) + "</TD><TD>");
     //cartDetails.Append(string.Format("{0,10:#,##0.00}", oForm.LineItems[iCount].ExtendedPrice) + "</TD><TD>");
     //cartDetails.Append(String.Format("{0}", oForm.LineItems[iCount].Quantity).PadLeft(4)+ "</TD><TD>");
     //cartDetails.Append(String.Format("{0:0.00}", oForm.LineItems[iCount].Price).PadLeft(8) + "</TD><TD>");

我已经粘贴了我正在使用的源代码。我添加了数量、价格、扩展价格,都是十进制列。我要做的就是用前导空格填充左边。小数四舍五入到 2 位似乎正在发生。

上面那些注释的行是我尝试过的其他一些选项。目前,如果 qty 具有 4 和 40 等值,当我在表格中打印它们时它们不会对齐。与价格相同。

有人可以建议我在这里做什么吗?

更新1:尝试了卢卡斯的建议,但它不起作用。这就是我得到的。

cartDetails.Append(String.Format("{0:0,10}", oForm.LineItems[iCount].Quantity));

当我尝试上述方法时,无论 oForm.LineItems[iCount].Quantity 中的值如何,它都会为每一行显示 10。

如果我更改 String.Format("{0:0,4}",它会为所有记录显示 04

4

2 回答 2

5

您可以使用AppendFormat方法而不是附加格式化字符串。正确的格式也是{index,padding:format}. 并考虑使用foreach而不是for

foreach (var lineItem in oForm.LineItems)
{ 
    cartDetails.AppendFormat("{0,4:0}", lineItem.Quantity);
    cartDetails.AppendFormat("{0,10:0.00}", lineItem.Price);
    // etc
}
于 2012-11-29T20:12:58.360 回答
1

备注:这是用于基于字符的表示(例如文本文件)中的对齐

查看复合格式 (MSDN)中的最后一部分。

首先根据需要格式化数字并填充结果

cartDetails.AppendFormat("{0,4}", // padding with spaces
    String.Format("{0:0}", oForm.LineItems[iCount].Quantity));  // format number

补充:如果您想将数据放置在 html 表格中,您应该使用 css(或内联样式)

<td class="right">This is right aligned</td>

用CSS

.right { text-align: right; }

或内联:

<td style="text-align: right">This is right aligned</td>
于 2012-11-29T19:53:08.713 回答