繁体   English   中英

具有未定义字符数的字符串格式c#

[英]String Format with undefined number of characters c#

所以我正在设计格式化字符串,我需要在表格中排列,但是这个字符串有不确定的字符数。 反正是否有字符串在每列的相同位置? 到目前为止我有:

ostring +=  "Notes\t\t" 
+ "       :  " 
+ employees[number].Notes 
+ "\t\t" 
+ employees[number].FirstNotes 
+ "\t\t" 
+ employees[number].SecondNotes;

我在其他行上使用类似的方式,但是它们具有预定数量的数字,但是不是这样我不能像我想的那样使用字符串修饰符。

关于我需要做什么的任何想法?

您可以使用String.PadRight()将字符串强制为特定大小,而不是使用制表符。

当您使用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);

你首先必须循环遍历每个条目以找到最大的条目,这样你才能知道锄头做列,例如:

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 效率更高。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM