C#控制台格式化

时间:2013-10-14 11:31:16

标签: c#

我正在迭代人员类型的对象列表,并显示每个人的姓名和姓氏。

for (int i = 0; i < myList.Count; i++)
{
   Console.WriteLine("-|- Name: " + myList[i].GetName() +
                      "| Surname: " + myList[i].GetName() + "|");

}

控制台中的输出如下!

-|- Name: Abcdef | Surname: Asqw |
-|- Name: Aswer | Surname: Asdgfsdf |
-|- Name: Adxz | Surname: Asdsada |

我希望输出以表格的形式显示如下。

-|- Name: Abcdef | Surname: Asqw     |
-|- Name: Aswer  | Surname: Asdgfsdf |
-|- Name: Adxz   | Surname: Asdsada  |

由于

7 个答案:

答案 0 :(得分:3)

var name = myList[i].GetName();
var surname = myList[i].GetName();
Console.WriteLine("-|- Name: {0,-10} | Surname: {1:-10} |", name, surname);

您可以将填充参数提供给格式化程序。在此示例中,每列至少占用10个字符。

{0:-10}
  0   argument reference
  :   parameter separator
  -10 left-justified padding (exempting the `-` means it will pad to the right)

有关详细信息,请参阅String.Format文档(因为Console.WriteLine(format, params args)继承此composite formatting

答案 1 :(得分:2)

使用padRight用空格填充所有具有较少字符的行,以便您可以对齐 所有这些人都在同一地点:

Console.WriteLine( ("-|- Name: " + myList[i].GetName()).PadRight(20,' ') + 
                  ("| Surname: " + myList[i].GetName() ) + "|".PadRight(20,' ');

答案 2 :(得分:1)

C#的字符串有一个PadRight方法(public string PadRight ( int totalWidth, char paddingChar );)。您可以使用此方法使用char填充字符串,只要需要将其设置为特定长度即可。缺点:您需要知道最长文本的内容,因此您需要在数据上循环两次。

答案 3 :(得分:0)

每次要添加制表符时,都可以在字符串中添加\t

答案 4 :(得分:0)

您应该使用复合格式,如下所示:

Console.WriteLine(
  "-|- Name: {0,-10} | Surname: {1,-10} |", 
  myList[i].GetName(),
  myList[i].GetName());

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/txafckwd.aspx

答案 5 :(得分:0)

Console.WriteLine("-|- Name: {0,-10}| Surname: {1,-10}|", 
    myList[i].GetName(), 
    myList[i].GetSurname());

答案 6 :(得分:0)

您可以在字符串中使用制表符(\t),例如:

 Console.WriteLine("-|- Name: " + myList[i].GetName() + "\t | Surname: "
                     + myList[i].GetName() + "\t |");

根据需要添加任意数量的标签。

或者您可以确保每列至少占用x个字符:

Console.WriteLine("-|- Name: {0,-x}| Surname: {1,-x}|", 
    myList[i].GetName(), 
    myList[i].GetSurname());

或者您可以在每列上使用PadRight方法(将x设置为您想要的数字):

Console.WriteLine( ("-|- Name: " + myList[i].GetName()).PadRight(x,' ') + 
                  ("| Surname: " + myList[i].GetName() ) + "|".PadRight(x,' ');