如何格式化具有固定宽度字段的字符串
本文关键字:字段 字符串 固定宽度 格式化 | 更新日期: 2024-10-21 22:40:32
我想知道是否有一种方法可以格式化字符串来格式化字符串,我的意思是,我有一个foreach循环,它可以从一些文件中获取信息,以及每个文件有多少条记录,因为每个文件的长度不同,格式也会改变。
我的例子是,我有3个文件:
1.- MyFile1.txt RecordCount: 5
2.- anotherfile.txt RecordCount: 8
3.- MyTestFile.doc RecordCount: 17
正如你所看到的没有格式化,我想要这样的东西:
1.- MyFile1.txt RecordCount: 5
2.- anotherfile.txt RecordCount: 8
3.- MyTestFile.doc RecordCount: 17
无论文件的长度如何,RecordCount都将位于同一位置。
我有这个:
foreach (RemoteFileInfo file in MySession.EnumerateRemoteFiles(directory.RemoteDirectory, directory.RemoteFiles, EnumerationOptions.None))
{
BodyMessage.Append((index + 1) + ". " + file.Name + " Record Count: " + File.ReadAllLines(Path.Combine(directory.LocalDirectory, file.Name)).Length.ToString() + "'n");
index++;
}
知道吗?
您可以尝试在字符串中使用't
,它将插入一个选项卡,或者您可以尝试填充每个部分,使它们总是占用相同的空间。
例如:
string fileName = file.Name.PadRight(50);
将确保CCD_ 2的长度至少为50个字符。我这么说至少是因为你的文件名总是可以超过50个字符。
foreach (RemoteFileInfo file in MySession.EnumerateRemoteFiles(directory.RemoteDirectory, directory.RemoteFiles, EnumerationOptions.None))
{
int lines= File.ReadAllLines(Path.Combine(directory.LocalDirectory, file.Name)).Length.ToString();
string appending = String.Format("{0,2}.- {1,-18} RecordCount: {3}", file.Name, lines);
BodyMessage.Append(appending);
index++;
}
请参阅MSDN:String.Format方法。
首先,使用字符串。格式,而不是串联:
int lineCount = File.ReadAllLines(Path.Combine(directory.LocalDirectory, file.Name)).Length.ToString();
string message = string.Format("{0}. {1}'t Record Count: " {2}'n", (index + 1), file.Name, lineCount);
要回答您的问题,您可以使用以下语法在格式化字符串中对齐文本:
string message = string.Format("{0}. {1,-10}'t Record Count: " {2}'n", (index + 1), file.Name, lineCount);
额外的-10将确保插入的文本填充为10个字符。
我认为您可以使用PadRight或PadLeft函数。
string _line = item.FirstName.PadRight(20) + item.Number.PadRight(20) + item.State.PadRight(20) + item.Zip.PadRight(20);
file.WriteLine(_line);