问题描述
早上好! 所以我想在 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。
任何形式的帮助都会很棒! 祝你有美好的一天!
解决方法
首先,string.Split(',')
不是 CSV 解析工具。您应该使用专用的 CSV 解析器和强类型输出,例如。 CSV Helper。
其次,ReadToEnd
会给你一个长字符串。解决方法是先用换行分割。但是,在此处使用 锯齿状数组 可能更容易(这会产生 string[][]
)。锯齿状数组更容易使用,因为您可以使用采用 IEnumerable
的标准 Linq 方法,而且您不需要一直挖掘维度。
示例
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));