【发布时间】:2017-10-04 00:22:06
【问题描述】:
目前我正在尝试使用 String.Format 创建一个数据网格(也许网格不是正确的词,稍后会显示),现在它在正常情况下会很好,除了其中一条线可能有任意行数。
目前的代码大致是这样的:
var TextFormat = "{0,-30} {1,-5} {2,-5} {3,-5} {4,-20}";
Text += String.Format(TextFormat, "Name", "ID", "Rarity", "Attributes", "Tier");
for(int i = 0; i < Items.Count; i++)
{
var Name = Items[i].Name;
var ID = Items[i].Id;
var Rarity = Items[i].Rarity;
var Attributes = Items[i].Attributes.ToList();
var Tier = Items[i].Tier;
Text += String.Format(TextFormat, Name, ID, Rarity, Attributes[0], Tier);
}
基本上Attributes[0] 是硬编码的,只是为了显示目的,以确保格式在间距方面很好,但最终我想让Attributes 打印多行,所以输出会是这样的:
Name ID Rarity Attributes Tier
Sword 0 Common Damage +2 0
Accuracy +1
Shield 1 Common Defense +5 0
Weight +5
我希望使用String.Format 来简化间距,并且不必在每个空格之间使用统一数量的空格,而且我很难找到与我类似的String.Format 用法我正在寻找。
如果不可能,那也没关系,我只是希望有一个我没有看到的好的解决方案。
【问题讨论】:
-
对于初学者,您应该使用
StringBuilder,但它是可行的。在移动到下一个Item之前,您需要一个内部循环来继续为 Attributes 列添加行 -
那么,您遇到了什么问题?你的行间距不正确吗?你用什么字体来显示(或打印)?
-
我遇到的问题是,如果我做任何类型的新行,它的格式不正确,它只会跳到下一行并在页面上左对齐。我没有使用任何特殊的字体,只是 .txt 的默认值
标签: c# string.format