0

我正在遍历 Persons 类型的对象列表,并显示每个人的姓名和姓氏。

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  |

谢谢

4

7 回答 7

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)继承了这种复合格式

于 2013-10-14T11:36:11.583 回答
2

使用 padRight 填充所有字符较少的行,以便您可以将所有行对齐在同一位置:

Console.WriteLine( ("-|- Name: " + myList[i].GetName()).PadRight(20,' ') + 
                  ("| Surname: " + myList[i].GetName() ) + "|".PadRight(20,' ');
于 2013-10-14T11:34:28.470 回答
1

C# 的字符串有一个 PadRight 方法 ( public string PadRight ( int totalWidth, char paddingChar );)。您可以使用此方法用 char 填充字符串,只要它具有一定的长度即可。缺点:你需要知道最长的文本会是什么,所以你需要在数据上循环两次。

于 2013-10-14T11:34:41.287 回答
0

\t每次您想添加表格时,您都可以添加字符串。

于 2013-10-14T11:34:31.970 回答
0

您应该按如下方式使用复合格式:

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

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

于 2013-10-14T11:35:28.877 回答
0
Console.WriteLine("-|- Name: {0,-10}| Surname: {1,-10}|", 
    myList[i].GetName(), 
    myList[i].GetSurname());
于 2013-10-14T11:35:29.260 回答
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,' ');
于 2013-10-14T11:35:32.197 回答