我想通过电子邮件发送一些车辆信息。 我有所有代码工作,但间隔信息是一个问题。每辆车都有一个清单,然后通过电子邮件发送清单。所以我遍历列表并获得缺陷和评论。
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
如何均匀分隔缺陷和评论?
答案 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>
代替。