如何均匀分隔信息?

时间:2016-03-22 14:46:14

标签: c# asp.net email spacing

我想通过电子邮件发送一些车辆信息。 我有所有代码工作,但间隔信息是一个问题。每辆车都有一个清单,然后通过电子邮件发送清单。所以我遍历列表并获得缺陷和评论。

foreach (var item in chkList.CheckItems)
        {
            if (item.Defect == true)
            {
                defect += item.ItemTitle + " " +  item.Comment + "\n";
            }
        }

        if (hasDefect == true)
        {
            Utils.ChecklistSendMail("Checklist", ToAddresses.Split(';'),
                "Vehicle Reg: " + reg + "\n" +
                "Checklist No: " + chkList.CheckListNo + "\n"+
                "Date: " + ChecklistDate.ToShortDateString() + "\n" +
                "Defects:                            Comments: " + "\n" + 
                defect);
        }

电子邮件然后看起来像这样:

Vehicle Reg: XLZ 8194
Checklist No: 0
Date: 22/03/2016
Defects:                            Comments: 
Vehicle Secure comment1
Brakes comment2

我希望缺陷和评论显示如下:

Defects:                     Comments: 
Vehicle Secure               comment1
Brakes                       comment2

如何均匀分隔缺陷和评论?

2 个答案:

答案 0 :(得分:2)

您可以使用支持自动填充的string.Format

string s = string.Format("{0,-20}{1}", "hello", "world");

哪个输出:

hello               world

如果你为每一行都这样做,并且你找到了一个很好的距离(我的示例代码中有20个),你会没事的。这一切都假定使用单倍间距字体。

答案 1 :(得分:1)

String.Format与宽度说明符一起使用:

if (item.Defect == true)
{
    defect += string.Format("{0,-20} {1,-10}\n", item.ItemTitle, item.Comment);
}

如果性能成为问题,您也可以使用StringBuilder.AppendFormat

如果您希望保证列已对齐,即使使用使用比例字体的客户端,也请考虑呈现为HTML并使用<table>代替。