LINQ;从文本文件中选择行组

时间:2011-10-24 17:41:59

标签: c# linq

问候大师,我有一个包含文本组的文本文件,我需要分成单独的字符串数组。如何使用“start:”行作为​​分隔符对这些进行分组? (组可能包含不同的行数,但都以“start:”开头。这是LINQ可以完成的工作吗?(每行都有单独的数据,在预览中看起来不那样)。

            List<string> lines = File.ReadAllLines(@"C:\test.txt").ToList();

开始:数据1

男孩:数据2

很棒:数据3

开始:数据7

男孩:数据8

很棒:数据9

女孩:数据10

2 个答案:

答案 0 :(得分:3)

可能有一个linq解决方案,但是当你只是用for循环来处理它时,我认为没有任何需要linq,例如我认为下面的代码完成了你想要的:

        var groups = new List<List<string>>();

        foreach (var line in lines)
        {
            if (line.StartsWith("Start:"))
            {
                groups.Add(new List<string>());
            }
            groups[groups.Count - 1].Add(line);
        }

我假设您的文件的第一行以Start:开头,否则您应该跳过第一行,直到到达第一个start:

答案 1 :(得分:0)

File.ReadAllText(@"C:\test.txt").split("start:");

将读取文件并将文件拆分为start:tag上的字符串数组。