首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Console.WriteLine对齐列中的文本?

如何使用Console.WriteLine对齐列中的文本?
EN

Stack Overflow用户
提问于 2010-12-15 18:41:39
回答 8查看 149.3K关注 0票数 80

我有一种列显示,但末尾的两列似乎没有正确对齐。这是我目前拥有的代码:

代码语言:javascript
复制
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);
}
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-12-15 19:00:47

您应该在每个输出字符串中嵌入实际的制表符( \t转义序列),而不是尝试手动将文本与任意空格字符串对齐:

代码语言:javascript
复制
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);
}
票数 14
EN

Stack Overflow用户

发布于 2010-12-15 18:56:22

尝尝这个

代码语言:javascript
复制
Console.WriteLine("{0,10}{1,10}{2,10}{3,10}{4,10}",
  customer[DisplayPos],
  sales_figures[DisplayPos],
  fee_payable[DisplayPos], 
  seventy_percent_value,
  thirty_percent_value);

其中,花括号内的第一个数字是索引,第二个数字是对齐。第二个数字的符号表示字符串应该左对齐还是右对齐。使用负数进行左对齐。

或者看看http://msdn.microsoft.com/en-us/library/aa331875(v=vs.71).aspx

票数 329
EN

Stack Overflow用户

发布于 2015-12-07 11:34:43

只是为了补充罗亚的答案。在c# 6.0中,您现在可以使用字符串插值:

代码语言:javascript
复制
Console.WriteLine($"{customer[DisplayPos],10}" +
                  $"{salesFigures[DisplayPos],10}" +
                  $"{feePayable[DisplayPos],10}" +
                  $"{seventyPercentValue,10}" +
                  $"{thirtyPercentValue,10}");

这实际上可以是一行,没有所有额外的美元,我只是认为这样读起来更容易一些。

您还可以在System.Console上使用静态导入,允许您这样做:

代码语言:javascript
复制
using static System.Console;

WriteLine(/* write stuff */);
票数 63
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4449021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档