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 文件的多维数组的主要内容,如果未能解决你的问题,请参考以下文章