【问题标题】:Issue with empty columns in tab delimited text file制表符分隔的文本文件中的空列问题
【发布时间】:2011-12-08 12:35:44
【问题描述】:

我正在尝试从制表符分隔的文本文件创建数据表。我很容易从文件中获取值。问题是当文本文件中有一个空列时,数据表中不会创建相同的空列而是在空列区域中替换下一个非空列内容

文本文件中的数据格式

id    name    product    cost     company name


1      abc    shoe                   xxx
2      xyz    chain                  yyy

得到的数据表

id    name    product    cost     company name

1      abc     shoe       xxx
2      xyz     chain      yyy

我的获取数据的代码

var reader = new StreamReader(File.OpenRead(@"d:\d.txt"));
        var table = new DataTable("SampleTable");
        string[] fieldValues = reader.ReadLine().Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries);

        for (int i = 0; i < fieldValues.Length; i++)
        {
            table.Columns.Add(new DataColumn(fieldValues[i].ToString().Trim()));
        }
        while (!reader.EndOfStream)
        {

            var line = reader.ReadLine().Trim();
            var values = line.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries);
            string[] ee = values;

            var newRow = table.NewRow();
            for (int i = 0; i < ee.Length; i++)
            {
                newRow[i] = ee[i].Trim().ToString(); // like sample [0,0]
            }
            table.Rows.Add(newRow);
        }

【问题讨论】:

    标签: c# asp.net datatable text-files


    【解决方案1】:

    您通过设置选项 StringSplitOptions.RemoveEmptyEntries 告诉 Split 完全按照您观察到的操作 - 它会删除空条目。

    删除此选项,它将保留空列。

    【讨论】:

      【解决方案2】:

      问题可能是您使用RemoveEmptyEntries 选项拆分行:

      var values = line.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries);
      

      空单元格被删除。省略此参数,它应该可以工作...

      【讨论】:

        【解决方案3】:

        如果你有一个空列,那么你应该读取一个空字符串,而不是一个空字符串。

        换句话说……

        1,abc,shoe,,xxx

        你得到你得到的结果的原因是:StringSplitOptions.RemoveEmptyEntries

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-02
          • 2017-08-04
          • 2012-04-26
          • 2010-09-15
          • 1970-01-01
          相关资源
          最近更新 更多