繁体   English   中英

从 C# 中没有标题的制表符分隔文件中读取文本数据

[英]Reading text data from tab delimited file without headers in C#

我想从 a.txt 文件中读取文本数据,其中的数据是制表符分隔的。 我正在粘贴下面的示例数据。 [1]: https://i.stack.imgur.com/t9cPt.png

现在我想要的是将数据读入一个没有标题字符串类型列表

我目前有以下代码:

            
            var sepList = new List<string>();

            // Read the file and display it line by line.
            using (var file = new StreamReader(docPath))
            {
                string line;
                while ((line = file.ReadLine()) != null)
                {
                    var delimiters = '\t';
                    var segments = line.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);

                    foreach (var segment in segments)
                    {
                        //Console.WriteLine(segment);
                        sepList.Add(segment);
                    }   
                }
            }

任何帮助将不胜感激:)[![在此处输入图片描述][1]][1]

我想要的是将数据读入一个没有标题的字符串类型列表。

添加file.ReadLine(); 在读取文件之前,它将跳过 header 或文件的第一行。

试试这个:-

var sepList = new List<string>();


using (var file = new StreamReader(docPath))
{
    // Skip the first line (the header)
    file.ReadLine();

    string line;
    while ((line = file.ReadLine()) != null)
    {
        var delimiters = '\t';
        var segments = line.Split(
           delimiters, StringSplitOptions.RemoveEmptyEntries
        );

        foreach (var segment in segments)
        {
            // console.WriteLine(segment);
            sepList.Add(segment);
        }   
    }
}

你可以用一行得到你的结果。

var data = File.ReadLines(docPath)
               .Skip(1)
               .Select(x => x.Split(new char[] {'\t'},StringSplitOptions.RemoveEmptyEntries))
               .SelectMany(k => k);

首先,我们使用 File.ReadLines 枚举文件中的行,创建一个序列,我们可以将其提供给以下命令。 然后我们跳过序列的第一行,对剩余的项目应用 Split 操作,得到另一个包含两个或更多值的序列,我们可以将这些值作为单个项目添加到分配给数据变量的 IEnumerable 中。 当然 ToList 会将 IEnumerable 实体化为最终处理数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM