我希望将多个字符串连接在一起,但要以简洁的方式显示。
实施例
Record[1] Title : xxxxxx Date : dd/mm/yy
Record[1000] Title : xxxxxx Date : dd/mm/yy
如果我只是将字符串连接在一起,随着记录数量的增加,标题和日期将被推到屏幕上看起来很乱(如上所示)。我希望标题和日期总是从字符串中的某个位置(比如位置25)开始,所以无论记录长度的数量是什么,标题和日期都会在页面上对齐。
此字符串将更新Treeview节点文本。
答案 0 :(得分:3)
考虑使用composite formatting,特别是格式字符串的对齐参数。
可选对齐组件是一个有符号整数,表示首选的格式化字段宽度。如果alignment的值小于格式化字符串的长度,则忽略alignment,并将格式化字符串的长度用作字段宽度。如果对齐为正,则字段中的格式化数据右对齐,如果对齐为负,则对齐左对齐。如果需要填充,则使用空格。如果指定了对齐,则需要逗号。
var s="";
foreach (var item in col) {
s += String.Format("Record[{0,-6}] Title: {1,-15} Date: {2}", item.ID, item.Title, item.Date);
}
使用StringBuilder
效率的示例:
var sb = new StringBuilder();
foreach (var item in col) {
sb.AppendFormat("Record[{0,-6}] Title: {1,-15} Date: {2}", item.ID, item.Title, item.Date);
}
答案 1 :(得分:1)
您可以使用PadRight()来确保您的第一个字符串具有正确的长度:
var record = "Record[1]";
var title = "Title : xxxxxx Date : dd/mm/yy .";
var output = record.PadRight(25) + title;
答案 2 :(得分:1)
这对我有用:
var paddingRecord = items.Select(x => x.Record.ToString().Length).Max();
var paddingTitle = items.Select(x => x.Title.Length).Max();
var result =
String.Join(Environment.NewLine,
items.Select(x =>
String.Format(
"Record[{0}]{1} Title : {2}{3} Date : {4:dd/MM/yy}",
x.Record,
"".PadLeft(paddingRecord - x.Record.ToString().Length),
x.Title,
"".PadLeft(paddingTitle - x.Title.Length),
x.Date)));
我为result
得到了这个:
Record[1] Title : Foo Date : 23/05/14
Record[1000] Title : Foo Bar Date : 23/05/14