使用正则表达式和列表对文本文件进行分组

时间:2015-06-05 15:00:29

标签: c# regex list file-io

所以我有一个文件,我想把它分成两组。下面我有一段我一直在研究的代码:

string path = "TextFile";
string lines[] = File.ReadAllLines(path);
int count = lines.Length;
List<string> groupAlpha = lines.Take(7678).ToList();
List<string> groupBeta = lines.Skip(7678).Take(5292).ToList();

数字代表行号。我的问题是它使用行号将它们组成组。如果我将来使用不同的文件,可能不会被这些确切的数字分开。我知道每个都以:

开头
***********BEGIN PROCESSING ALPHA PNRS***********

并以:

结束
************END PROCESSING ALPHA PNRS************

Beta与alpha相同,但在ALPHA所在的位置插入了BETA。

我的问题是,是否有一种语法方式,它与我上面的相似,但使用正则表达式来解决我将这些问题分成两组列表的问题?如果有可能请您以答案的形式告诉我而不是评论?谢谢!

1 个答案:

答案 0 :(得分:0)

Linq完全有能力这样做,使用正则表达式会让我觉得更难。

string alphaStart = "***********BEGIN PROCESSING ALPHA PNRS***********";
string alphaEnd = "************END PROCESSING ALPHA PNRS************";
string betaStart = "***********BEGIN PROCESSING BETA PNRS***********";
string betaEnd = "************END PROCESSING BETA PNRS************";


List<string> groupAlpha = (lines.SkipWhile(s => s != alphaStart).Skip(1).TakeWhile(s => s != alphaEnd)).ToList();
List<string> groupBeta = (lines.SkipWhile(s => s != betaStart).Skip(1).TakeWhile(s => s != betaEnd)).ToList();