Looking for an easy way to align text

前端 未结 6 2041
悲哀的现实
悲哀的现实 2021-01-31 07:17

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:

6条回答
  •  后悔当初
    2021-01-31 08:02

    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).

提交回复
热议问题