Search code examples
c#consoletabsalignmentvertical-alignment

How can I align text in columns using Console.WriteLine?


I have a sort of column display, but the end two column's seem to not be aligning correctly. This is the code I have at the moment:

Console.WriteLine("Customer name    " 
    + "sales          " 
    + "fee to be paid    " 
    + "70% value       " 
    + "30% value");
for (int DisplayPos = 0; DisplayPos < LineNum; DisplayPos = DisplayPos + 1)
{
    seventy_percent_value = ((fee_payable[DisplayPos] / 10.0) * 7);
    thirty_percent_value = ((fee_payable[DisplayPos] / 10.0) * 3);          
    Console.WriteLine(customer[DisplayPos] + "         " 
        + sales_figures[DisplayPos] + "               " 
        + fee_payable[DisplayPos] + "           " 
        + seventy_percent_value + "           " 
        + thirty_percent_value);
}

Solution

  • Instead of trying to manually align the text into columns with arbitrary strings of spaces, you should embed actual tabs (the \t escape sequence) into each output string:

    Console.WriteLine("Customer name" + "\t"
        + "sales" + "\t" 
        + "fee to be paid" + "\t" 
        + "70% value" + "\t" 
        + "30% value");
    for (int DisplayPos = 0; DisplayPos < LineNum; DisplayPos++)
    {
        seventy_percent_value = ((fee_payable[DisplayPos] / 10.0) * 7);
        thirty_percent_value = ((fee_payable[DisplayPos] / 10.0) * 3);          
        Console.WriteLine(customer[DisplayPos] + "\t" 
            + sales_figures[DisplayPos] + "\t" 
            + fee_payable + "\t\t"
            + seventy_percent_value + "\t\t" 
            + thirty_percent_value);
    }