Using String.Format To Dynamically Provide The Max

2019-08-11 14:23发布

Hello I am trying to make my Console Application assignment more aesthically pleasing and by doing this I have decided to implement String.Format into my loops. We haven't been taught it but it is pretty easy to pick up. The main problem here is how do I parse a int into the String.Format so that it provides the max space needed.

This is the loop:

for (int index = 0; index < files.Length; index++)
{
    int maxNumericalSize = 2;
    int fileNumberSystem = index + 1;
    string result = string.Format("{0,maxNumericalSize}: {1,20} - {2,10} - {3}", fileNumberSystem, files[index].Name, files[index].Length, files[index].LastWriteTime );
    /* Console.WriteLine(fileNumberSystem + ". " + files[index].Name + " - " + files[index].Length + " - " + files[index].LastWriteTime); */
    Console.WriteLine(result);
}

As you can see MaxNumericalSize obviously throws an area as it is within speech marks so I am currently wondering how I could parse that into String.Format like that without the error.

1条回答
太酷不给撩
2楼-- · 2019-08-11 14:56

Try using string.PadLeft/string.PadRight to add additional spaces as follows

string.Format("{0}: {1,20} ..", fileNumberSystem.ToString().PadRight(maxNumericalSize), ...);

For PadRight it works like this

Returns a new string that left-aligns the characters in this string by padding them with spaces on the right, for a specified total length.

There's even an overload which let's you choose a character to fill in the space. You can find more on MSDN.

查看更多
登录 后发表回答