【问题标题】:C# Console Formatting [duplicate]C#控制台格式[重复]
【发布时间】:2013-10-21 23:02:17
【问题描述】:

我正在遍历 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  |

谢谢

【问题讨论】:

标签: c#


【解决方案1】:
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

【讨论】:

    【解决方案2】:

    使用 padRight 填充所有字符较少的行,以便对齐 他们都在同一个位置:

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

    【讨论】:

    • 这不是填充每一列而是填充整个字符串...
    • 真的。让我更新它;)
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      欲了解更多信息,请参阅http://msdn.microsoft.com/en-us/library/txafckwd.aspx

      【讨论】:

        【解决方案5】:

        您可以在每次想要添加表格时在字符串中添加\t

        【讨论】:

          【解决方案6】:
          Console.WriteLine("-|- Name: {0,-10}| Surname: {1,-10}|", 
              myList[i].GetName(), 
              myList[i].GetSurname());
          

          【讨论】:

            【解决方案7】:

            您可以在字符串中使用制表符 (\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,' ');
            

            【讨论】:

              猜你喜欢
              • 2017-02-20
              • 2010-11-29
              • 2010-12-21
              • 2011-06-20
              • 2013-08-26
              • 1970-01-01
              • 1970-01-01
              • 2012-08-20
              • 1970-01-01
              相关资源
              最近更新 更多