我有一条消息,我打印出实体名称及其计数。我使用过StringBuilder
课程。我有这样的代码:
message.AppendFormat("Items1: {0}",item1count).AppendLine();
message.AppendFormat("Items2Byb: {0}",item2count).AppendLine();
message.AppendFormat("Items3STCDEE: {0}",item3count).AppendLine();
message.AppendFormat("Items4HTECEEGG: {0}",item4count).AppendLine();
message.AppendFormat("ItemsASSTEC: {0}",item5count).AppendLine();
结果如下:
Items1: 1
Items2Byb: 3
Items3STCDEE 5
无论物品名称的长度如何,我想要的是正确对齐:
Items1: 1
Items2Byb: 3
Items3STCDEE 5
答案 0 :(得分:6)
这是一种不使用PadRight
的方法,该方法假设左侧标签的最大长度为20
。当然,您应该将数字调整为1 + max
。
using System;
using System.IO;
using System.Text;
public class P{
public static void Main(string[] args) {
StringBuilder message = new StringBuilder();
message.AppendFormat("{0,-20}{1}","Items1:",1).AppendLine();
message.AppendFormat("{0,-20}{1}","Items2Byb:",2).AppendLine();
message.AppendFormat("{0,-20}{1}","Items3STCDEE:", 3).AppendLine();
message.AppendFormat("{0,-20}{1}","Items4HTECEEGG:",4).AppendLine();
message.AppendFormat("{0,-20}{1}","ItemsASSTEC:",5).AppendLine();
Console.WriteLine(message.ToString());
}
}
输出:
Items1: 1
Items2Byb: 2
Items3STCDEE: 3
Items4HTECEEGG: 4
ItemsASSTEC: 5
答案 1 :(得分:4)
对于简单格式,您可以使用PadRight
(为简单起见使用文字1,3,4
)
var message = new StringBuilder();
int width = 20;
message.Append("Items1:".PadRight(width) + 1).AppendLine();
message.Append("Items2Byb:".PadRight(width) + 3).AppendLine();
message.Append("Items3STCDEE:".PadRight(width) + 4).AppendLine();
message.Append("Items4HTECEEGG:".PadRight(width) + 5).AppendLine();
message.Append("ItemsASSTEC:".PadRight(width) + 6).AppendLine();
将打印:
Items1: 1
Items2Byb: 3
Items3STCDEE: 4
Items4HTECEEGG: 5
ItemsASSTEC: 6
或者您可以定义自定义方法(了解{0,-20}
格式的更多内容,考虑this article。基本上它表示从右边填充空格,直到字符串占用20个字符。):
public void AddLine(StringBuilder builder, string name, int val)
{
builder.AppendFormat("{0,-20}{1}", name, val).AppendLine();
}
并重复使用它:
AddLine(message, "Items1:", 1);
AddLine(message, "Items2Byb:", 3);
AddLine(message, "Items3STCDEE:", 4);
AddLine(message, "Items4HTECEEGG:", 5);
AddLine(message, "ItemsASSTEC:", 6);