【发布时间】:2021-01-13 19:25:18
【问题描述】:
我想将有关产品的信息打印到控制台行,我拥有的代码是这样的:
const string format = "[PRODUCT_ID] {0, -10} | [SIZE] {1, -10} | [PRICE] {2, -10}"
foreach (DataRow row in productTable.Rows)
{
Console.WriteLine(string.Format(format, row["PRODUCT_ID"], row["SIZE"], row["PRICE"]));
}
理想情况下,我希望将所有“|”排成一行,以使预期输出为:
[PRODUCT_ID] 25439 | [SIZE] XS | [PRICE] 34.55 USD
[PRODUCT_ID] 25438 | [SIZE] XL | [PRICE] 27.99 USD
[PRODUCT_ID] 142367 | [SIZE] S | [PRICE] 27.99 USD
[PRODUCT_ID] 352344 | [SIZE] M | [PRICE] 12.50 USD
但实际上,控制台中的实际输出如下所示:
[PRODUCT_ID] 25439 | [SIZE] XS | [PRICE] 34.55 USD
[PRODUCT_ID] 25438 | [SIZE] XL | [PRICE] 27.99 USD
[PRODUCT_ID] 142367 | [SIZE] S | [PRICE] 27.99 USD
[PRODUCT_ID] 352344 | [SIZE] M | [PRICE] 12.50 USD
【问题讨论】:
-
你确定你粘贴的代码实际上是给你输出的东西吗?对齐对我来说很好:see here
-
@IvanKhorin 在字符串格式中指定对齐方式是完全有效的:docs.microsoft.com/en-us/dotnet/api/…你知道作者问题的根本原因可能是什么吗?
-
问题几乎可以肯定是控制台没有使用固定宽度的字体,这意味着仅用空格填充不会使事情排成一行。您是复制并粘贴了实际结果,还是只是制作了“看起来”像您得到的结果的假结果?
-
对不起,我的错,第二次尝试我得到了预期的结果。如问题所示,两个结果都是错误的,因此在表格上转换为字符串时可能存在问题。因为我的测试代码适用于整数和字符串列表。也许像
row["PRODUCT_ID"].ToString()一样明确使用.ToString()是个好主意。 -
@Ctznkane525 不正确:无论列类型如何,从
DataRow转换格式都很好。
标签: c# string string-formatting