列表中的C#数组以格式化方式打印到控制台

时间:2014-02-25 17:35:23

标签: c# arrays list console

基本上我想以格式化的方式在控制台中打印列表的内容,如下所示:

expected output

然而我现在拥有的是:

Console.WriteLine("\nHistory |  B W");
Console.WriteLine("================");

List.AddRange(array1);
List.Add(array2);
List.Add(array3);

foreach (int i in List)
 {
   Console.Write(i);
 }

像这样打印:

actual output

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

您是否阅读过文档?

我确定你会弄明白。

答案 1 :(得分:0)

如果所有数组具有相同的长度,则最简单的解决方案:

string rowFormat = "{0,15}|{1,3} {2,3}";
Console.WriteLine(rowFormat, "History", "B", "W");
Console.WriteLine(new String('=', 25));

for(int i = 0; i < array1.Length; i++)    
    Console.WriteLine(rowFormat, array1[i], array2[i], array3[i]);

但我建议您使用自定义类型的数据,而不是将数据保存在三个数组中。例如。 (根据你的意见命名)

public class UserGuess
{
    public int AttemptNumber { get; set; }
    public int BlacksCount { get; set; }
    public int WhitesCount { get; set; }
}

但格式化将保持不变:

foreach(var g in guesses)
    Console.WriteLine(rowFormat, 
       g.AttemptNumber, g.BlacksCount, f.WhitesCount);

注意:作为String.Format文档状态的The format item部分,格式项具有以下语法{ index[,alignment][ :formatString] }。因此,上面的代码只使用alignment参数来设置固定的字段总长度。