C# 中 CSV 文件的多维数组

Posted

技术标签:

【中文标题】C# 中 CSV 文件的多维数组【英文标题】:Multidimensional Array for CSV-File in C# 【发布时间】:2021-04-23 13:37:14 【问题描述】:

早安! 所以我想在 C# 中为 CSV 文件创建一个多维数组。我编写了此代码,但它不起作用。有人可以帮帮我吗?

        StreamReader sr = new StreamReader(@"C:\_repos\2021-3xhit-p1-team-02\Programm\CodeZuweisen.txt");

      
        string[,] info = new string[10,6];
        int line = 0;

        string content = sr.ReadToEnd();
        string[] s = content.Split(',');

        for (int i = 0; i < s.Length; i++)
        

            if (i % 6 == 0 && i!=0)
            
                ++line;
            
            else
            
                info[line, i] = s[i];
            
        


        lblAusgabe.Text = info[1,2];

如果我想运行这个程序,有没有输出? 我已经用 java 编写过了,它也可以工作,但我不喜欢 C# :D。

任何形式的帮助都会很棒! 祝你有美好的一天!

【问题讨论】:

能否请您出示您的excel数据... 这是一个文本文件 请发布minimal reproducible example,包括您的输入和预期输出,以便我们复制问题。 顺便说一句:你没有重置i。 [1,2] 中不能有非空字符串。我想知道为什么您没有收到 IndexOutOfBoundsException ...也许我在这里遗漏了一些东西。 “我已经用 java 编程过,它也可以工作” - 我有疑问。用于此的 Java 代码应该相当接近此代码的内容。因此,如果您在 Java 中有相同的 (="equivalent"),它无法“工作”。 【参考方案1】:

首先,string.Split(',') 不是 CSV 解析工具。您应该使用专用的 CSV 解析器和强类型输出,例如。 CSV Helper.

其次,ReadToEnd 会给你一个长字符串。解决方法是先用换行分割。然而,在这里使用 锯齿状数组 可能更容易(这将产生一个string[][])。锯齿状数组更容易使用,因为您可以使用标准 Linq 方法,该方法采用 IEnumerable,并且您不需要一直挖掘维度。

示例

var myArray = File.ReadAllLines("FileName")
                  .Select(x => x.Split(','))
                  .ToArray();

// print the results to screen
foreach (var line in myArray)
   Console.WriteLine(string.Join(", ", line));

【讨论】:

以上是关于C# 中 CSV 文件的多维数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP比较由CSV制作的多维数组中的键/值

从php中的多维数组中删除重复值

如何在 PHP 中对多维数组进行排序 [重复]

在 laravel 中导出 excel 或 csv 中的多维数组

C# 中的多维数组列表或列表?

多维数组和 C# 中的数组数组有啥区别?