所以我正在设计格式化字符串,我需要在表格中排列,但是这个字符串的字符数不确定。反正是否有字符串在每列的相同位置?到目前为止我有:
ostring += "Notes\t\t"
+ " : "
+ employees[number].Notes
+ "\t\t"
+ employees[number].FirstNotes
+ "\t\t"
+ employees[number].SecondNotes;
我在其他行上使用了类似的方式,但它们有一个预先确定的数字位数,但不是这样我不能像我想的那样使用字符串修饰符。
关于我需要做什么的任何想法?
答案 0 :(得分:5)
您可以使用String.PadRight()
强制字符串为特定大小,而不是使用制表符。
答案 1 :(得分:2)
当您使用String.Format项目格式时,语法如下:
{ index[,alignment][ :formatString] }
因此,您可以指定对齐,该对齐指示插入参数的字段的总长度以及它是右对齐(正整数)还是左对齐(负整数)。
最好使用StringBuilder来构建字符串:
var builder = new StringBuilder();
var employee = employees[number];
builder.AppendFormat("Notes {0,20} {1,10} {2,15}",
employee.Notes, employee.FirstNotes, employee.SecondNotes);
答案 2 :(得分:0)
你首先必须遍历每个条目才能找到最大的条目,这样你就可以知道锄头的宽度如下:
var notesWidth = employees.Max(Notes.Length);
var firstNotesWidth = employees.Max(FirstNotes.Length);
// etc...
然后您可以将列填充到正确的宽度:
var output = new StringBuilder();
foreach(var employee in employees)
{
output.Append(employee.Notes.PadRight(notesWidth+1));
output.Append(employee.FirstNotes.PadRight(firstNotesWidth+1));
// etc...
}
并且请不要在循环中做很多字符串“添加”(“1”+“2”+“3”+ ...)。请改用StringBuilder
。效率更高。