编写和抛光CSV解析器

Tom*_*aly 4 c# parsing

作为最近项目的一部分,我必须从CSV文件中读取和写入并放入c#中的网格视图中.最后决定使用一个现成的解析器为我做的工作.

因为我喜欢做那种东西,我想知道如何写自己的东西.

到目前为止,我所做的就是:

//Read the header
            StreamReader reader = new StreamReader(dialog.FileName);
            string row = reader.ReadLine();
            string[] cells = row.Split(',');

            //Create the columns of the dataGridView
            for (int i = 0; i < cells.Count() - 1; i++)
            {
                DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
                column.Name = cells[i];
                column.HeaderText = cells[i];
                dataGridView1.Columns.Add(column);
            }

            //Display the contents of the file
            while (reader.Peek() != -1)
            {
                row = reader.ReadLine();
                cells = row.Split(',');
                dataGridView1.Rows.Add(cells);
            }
Run Code Online (Sandbox Code Playgroud)

我的问题:这样做是一个明智的想法,如果是(或不是),我将如何正确地测试它?

Mar*_*ins 7

作为一项编程练习(用于学习和获得经验),这可能是一件非常合理的事情.对于生产代码,使用现有库可能更好,主要是因为工作已经完成.使用CSV解析器可以解决很多问题.例如(随机离开我的头顶):

  • 引用值(字符串)
  • 引用字符串中的嵌入式引号
  • 空值(NULL ...或者甚至是NULL与空).
  • 没有正确条目数的行
  • 标题与无标题.
  • 识别不同的数据类型(例如,不同的日期格式).

但是,如果在非常受控的环境中有非常特定的输入格式,则可能不需要处理所有这些格式.