尝试对齐输出到控制台的内容

Trying to align what is output to the console

我有一个 DisplayResults 方法,调用它时会将其内容输出到控制台。我很难让它对齐。我已经使用制表符 \t 来对齐它,但它看起来会更好。这是代码:

        public static void DisplayResults(string empName, decimal empWeeklySales, decimal COMMISSION_RATE, decimal grossPay, 
                                      decimal INCOME_TAX_RATE, decimal incomeTaxPayable, decimal PRSI_RATE, decimal prsiPayable,
                                      decimal RETIREMENT_CONTRIBUTION_RATE, decimal retirementContribution, 
                                      decimal totalDeductions, decimal takeHomePay)
    {
        Console.WriteLine("\n*************** WEEKLY PAYROLL APP ***************\n");

        Console.WriteLine("Employee Name: \t\t\t\t{0}\n", empName);
        Console.WriteLine("This week's sales: \t\t\t{0:n}", empWeeklySales);
        Console.WriteLine("Commission Rate: \t{0:F2}%\n", COMMISSION_RATE);

        Console.WriteLine("Gross Pay: \t\t\t\t{0:F2}", grossPay);
        Console.WriteLine("Income Tax: \t\t({0:F2}%) \t{1:F2}", INCOME_TAX_RATE, incomeTaxPayable);
        Console.WriteLine("PRSI: \t\t\t({0:F2}%) \t{1:F2}", PRSI_RATE, prsiPayable);
        Console.WriteLine("Retirement Contribution: ({0:F2}%) \t{1:F2}", RETIREMENT_CONTRIBUTION_RATE, retirementContribution);

        Console.WriteLine("Total Deductions: \t\t\t{0:F2}\n", totalDeductions);

        Console.WriteLine("Take Home Pay: \t\t\t\t{0:F2}\n", takeHomePay);

        Console.WriteLine("\n**************************************************");
    }

当我输出它时,它看起来像这样:

如您所见,排列得不是很好。我希望中间的百分比值和右边的货币值都右对齐。因此,理想情况下,文本将全部左对齐,带有百分比值的中间区域右对齐,右侧的货币值的外部区域右对齐。我希望这是有道理的。谁能告诉我如何最好地实现这一目标?谢谢。

您可以使用带对齐的字符串格式来创建字符列。当您的输出控制台使用固定宽度的字体时,这是可行的。

例如你的第一行可以写成

Console.WriteLine("{0,-40}{1,-50}", "Employee Name:", empName);

这将在左侧对齐的 40 个字符的列中写入 "Employee Name;",并用空格填充剩余部分以达到 40 个字符的宽度。然后一个宽度为 50 个字符的新列将收到 empname 的值,该值在列

的左侧对齐

所得税税率行可以写成

Console.WriteLine("{0,-30}{1,10:F2}%{2,50:F2}", 
              "Income Tax:", INCOME_TAX_RATE, incomeTaxPayable);

这会将标签的第一列减少到仅 30 个字符,并添加一个包含 10 个字符的列,该列将填充右对齐的 INCOME_TAX_RATE 的值。当然,这可以在其他行中重复

这在名为 Composite Formatting

的 MSDN 文章中有很好的解释