【问题标题】:Cant split a line不能分割线
【发布时间】:2011-12-03 01:10:05
【问题描述】:

我有这部分代码,它获取一个文件并将其放入ArrayList。将输入的文件将是CSV(我使用的当前CSV 在第一行有标题,所以我不需要那行),第二行必须放在ArrayList .

我使用ArrayList,因为文件可以是动态的,所以我不确定第二行的长度是多少。我测试了(在第二行使用一个包含 7 个逗号分隔值的文件)这段代码,它打印出 ArrayList 的长度为 (fileList.Count) = 1。

怎么了?

ArrayList fileList2 = new ArrayList();
private void button3_Click(object sender, EventArgs e)
{
    string filename = "";
    DialogResult result = openFileDialog2.ShowDialog();
    if (result == DialogResult.OK)
    {
        filename = openFileDialog2.FileName;
        textBox3.Text = filename;
        string line2;
        System.IO.StreamReader file2 = new System.IO.StreamReader(textBox3.Text);  //reads file from textbox 
        stringforData = file2.ReadLine();      // this reads the first line that I dont need 
        while ((line2 = file2.ReadLine()) != null)     //read the lines 
        {
            // puts elements into array
            fileList2.Add(line2.Split(';'));//split the line and put it in the arraylist
        }
        file2.Close();
        if (true)    // this is for testind what is happening 
        {
            this.textBox2.Clear();
            textBox3.Text = Convert.ToString(fileList2.Count);
        }
    }
}

【问题讨论】:

  • 你到底为什么在 2011 年使用 arraylist?它已被弃用多年,如果 Baszz 是正确的,您的示例就说明了原因
  • 要补充 Dyppl 所说的内容,请参阅 this question
  • @Dyppl 我应该使用什么以及如何使用?
  • @georgemano:你应该使用generis List<T>msdn.microsoft.com/en-us/library/6sh2ey19.aspx,我想在你的情况下它将是List<string>ArrayList 在泛型之前就有了,现在没有必要在新代码中使用它了。
  • 另外请记住,从 CSV 文件中获取数据是 solved problem。请不要重新发明轮子,只需使用现有的库即可。

标签: c# csv


【解决方案1】:

首先,您可能应该使用 AddRange(),而不是 Add()。其次,如果这是一个 CSV 文件,那么为什么要向 split() 方法传递分号?

【讨论】:

  • 我使用 csv 和 ; 而不是 ,
  • 那么请指定这个,CSV 表示逗号。
【解决方案2】:

您不想使用 fileList2.AddRange() 代替 fileList2.Add() 吗? 在我看来,您现在正在向 fileList 添加一项。该项目是一个数组,其中包含您实际想要添加到列表中的所有项目。如果你先得到那个数组,然后使用 addRange 方法,应该没问题。

【讨论】:

  • +1 对我来说也像错误..无论如何,我认为问题的表述不正确,因为 filelist2 从未在其中定义,并且 OP 告诉我们 filelist 计数为 1 ...
  • 也:他在用 ; 分割时谈到了一个逗号分隔的行。
  • @mtijn:很可能没关系,CSV 文件在某些​​语言环境(如俄语)中通常带有分号分隔符,但仍称为 CSV
猜你喜欢
  • 2011-08-29
  • 1970-01-01
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2012-03-29
相关资源
最近更新 更多