【问题标题】:C# how can I write data from a two-dimensional array to a text-file and format them in columns?C#如何将二维数组中的数据写入文本文件并将它们格式化为列?
【发布时间】:2023-09-08 13:46:02
【问题描述】:

所以我有一个二维数组,我想将所有数据写入一个文本文件。但我希望它们出现在文本文件的列中。

(我没有在我的代码中这样声明它们,但我认为这就是数组写出来的样子):

myArray = [{Jamie, 5}, {Susan, 7}, {Robert, 2}, {Sam, 9}];

我希望它在文本文件中看起来像这样:

Jamie    5
Susan    7
Robert   2
Sam      9

我看过How to write contents of an array to a text file? C#Format a string into columns等其他答案,但我觉得他们只回答了我的问题的一半,我也不明白。

到目前为止我所拥有的是:

using (StreamWriter sw = new StreamWriter(@"../../test.txt", false))
{
   foreach ()
   {
   }
}

我不确定我应该在 foreach() 中有什么。

我该怎么做?

【问题讨论】:

  • 是作业吗? 谁能帮助我? -> 是的,他们可以,但请参阅this我该怎么做? - 你必须做出决定,然后试一试;我们在这里帮助您解决在实施您提出的设计时遇到的问题,而不是为您提出整个设计和实施
  • 看看这个方法:docs.microsoft.com/de-de/dotnet/api/…,试着写东西。你会看到事情是如何运作的。
  • foreach 中,您必须迭代行并输出它们。也许您需要该行的单元格的内部循环。也许您需要两个这样的双循环:一个用于计算用于格式化的东西,另一个用于实际执行格式化输出。
  • 多维数组在这里似乎是错误的解决方案,使它与整数和字符串一起工作的唯一方法是它是对象类型。您遇到的第二个问题是在文件中填充任何内容。我们为此提供了一种特殊的文件类型,例如 CSV,以及用于阅读它们的特殊阅读器。

标签: c# arrays streamwriter


【解决方案1】:

一种简单的方法是:

  1. 迭代所有需要输出的字符串并存储最长的字符串的长度。
  2. 再次迭代所有项目;使用两个嵌套循环(行和列)似乎是个好主意。
  3. 编写您在第 2 步中迭代的每个项目,并在右侧填充足够的空格以说明列间距和第 1 步的最长长度。string.PadRight 似乎是一个不错的选择。

你已经完成了。

当然,你可以变得更漂亮,存储每列的最长长度,然后用它的特定长度填充每列......

【讨论】: