如何格式化具有固定宽度字段的字符串

本文关键字:字段 字符串 固定宽度 格式化 | 更新日期: 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);