带有未定义字符数的字符串格式
本文关键字:字符串 格式 字符 未定义 | 更新日期: 2023-09-27 17:49:30
所以我正在格式化一个字符串,我需要在一个表中排列它,但是这个字符串有一个不确定的字符数量。有没有办法让字符串在同一位置为每一列?到目前为止我有:
ostring += "Notes't't"
+ " : "
+ employees[number].Notes
+ "'t't"
+ employees[number].FirstNotes
+ "'t't"
+ employees[number].SecondNotes;
我在其他行上使用了类似的方式,但它们有一个预先确定的数字数,但是这并没有使我不能像我想的那样使用字符串修饰符。
你知道我需要做什么吗?
您可以使用String.PadRight()
强制字符串为特定的大小,而不是使用制表符。
当您使用字符串时。格式项格式有以下语法:
{ 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);
首先要循环遍历每个条目以找到最大的条目,这样您就知道列的宽度,例如:
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
代替。