c# - 制表符分隔文本文件中的空列问题

标签 c# asp.net datatable text-files

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

文本文件中的数据格式

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);
        }

最佳答案

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

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

关于c# - 制表符分隔文本文件中的空列问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8431063/

相关文章:

c# - 从两个DataTable中获取公共(public)ID

C#5 ReadAsync 和迭代器

c# - C# 结构中的 MySQL 错误

c# - ASP.NET MVC 授权具有多个角色的用户

jquery - Bootstrap Accordion + 数据表

javascript - DataTable 重新加载后,大多数函数返回 null

c# - 无法使用代码优先创建数据库

c# - StreamWriter 和 Samba2 (SMB2)

c# - 需要有关格式异常的帮助::输入字符串的格式不正确

asp.net - 您可以在ASP.NET中指定差异./、../~~/吗?