C# 尝试将输出内容与控制台对齐

C# 尝试将输出内容与控制台对齐,c#,console,alignment,C#,Console,Alignment,我有一个DisplayResults方法,当调用它时,它会将其内容输出到控制台。我很难使它对齐。我已经使用tabs\t来对齐它,但是它看起来会更好。代码如下: public static void DisplayResults(string empName, decimal empWeeklySales, decimal COMMISSION_RATE, decimal grossPay, decima

我有一个DisplayResults方法,当调用它时,它会将其内容输出到控制台。我很难使它对齐。我已经使用tabs\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);
Console.WriteLine("{0,-30}{1,10:F2}%{2,50:F2}", 
              "Income Tax:", INCOME_TAX_RATE, incomeTaxPayable);
这将在左侧对齐的40个字符的列中写入“Employee Name;”,并用空格填充剩余部分以达到40个字符的宽度。然后,宽度为50个字符的新列将接收列左侧对齐的
empname

所得税税率的线可以写为

Console.WriteLine("{0,-40}{1,-50}", "Employee Name:", empName);
Console.WriteLine("{0,-30}{1,10:F2}%{2,50:F2}", 
              "Income Tax:", INCOME_TAX_RATE, incomeTaxPayable);
这将使标签的第一列减少到仅30个字符,并添加一个包含10个字符的列,该列将填充右侧对齐的所得税税率值。当然,这可以在其他线路上重复


这在MSDN的文章中有很好的解释,文章名为

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

例如,您的第一行可以写为

Console.WriteLine("{0,-40}{1,-50}", "Employee Name:", empName);
Console.WriteLine("{0,-30}{1,10:F2}%{2,50:F2}", 
              "Income Tax:", INCOME_TAX_RATE, incomeTaxPayable);
这将在左侧对齐的40个字符的列中写入“Employee Name;”,并用空格填充剩余部分以达到40个字符的宽度。然后,宽度为50个字符的新列将接收列左侧对齐的
empname

所得税税率的线可以写为

Console.WriteLine("{0,-40}{1,-50}", "Employee Name:", empName);
Console.WriteLine("{0,-30}{1,10:F2}%{2,50:F2}", 
              "Income Tax:", INCOME_TAX_RATE, incomeTaxPayable);
这将使标签的第一列减少到仅30个字符,并添加一个包含10个字符的列,该列将填充右侧对齐的所得税税率值。当然,这可以在其他线路上重复


这在MSDN文章《你可以制作一个WinForms应用程序》中有很好的解释。控制台是您实际上不需要在UI中投入任何精力的地方。您可以制作一个WinForms应用程序。在控制台中,您实际上不需要在UI中投入任何精力。谢谢!这很有帮助。我最初使用的是{0,10},但因为我也使用了:F2,我不知怎的认为值10在它后面,即{0:F2,10}。你可以想象,这是行不通的。我不知道应该是{0,10:F2}谢谢你的帮助。:)非常感谢。这很有帮助。我最初使用的是{0,10},但因为我也使用了:F2,我不知怎的认为值10在它后面,即{0:F2,10}。你可以想象,这是行不通的。我不知道应该是{0,10:F2}谢谢你的帮助。:)