I have a common problem that I\'m looking for a solution to. I have lines of similar text I\'d like to somehow automatically insert text to align them vertically such that:
You did not list a programming language so here is some C# that performs the requested operation:
int[] maxLengths = new int[100];
string[][] splitLines = new string[input.Length][];
for (int i = 0; i < input.Length; i++)
{
splitLines[i] = input[i].Split(' ');
for (int j = 0; j < splitLines[i].Length; j++)
{
maxLengths[j] = Math.Max(maxLengths[j], splitLines[i][j].Length);
}
}
for (int i = 0; i < splitLines.Length; i++)
{
for (int j = 0; j < splitLines[i].Length; j++)
{
Console.Write(string.Format("0,-" + (maxLengths[j] + 1) + ":G}", splitLines[i][j]));
}
Console.WriteLine();
}
Note that 100 has to be greater than or equal to the number of segments per line. You can cause that number to not be fixed with a little work if you like.
Basically this algorithm splits each line based on spaces, then for each part calculates the maximum into a common array. Finally it loops through all these segmented parts and prints them out left-justified using spaces to the largest size (plus 1 to get the space between items).