-1

我有一个文件,我已经使用 List lines = File.ReadAllLines(path).ToList(); 读取了所有行 列表是这样的:

Remove lines here
...
BEGIN READ
X
Y
Z
END READ
more lines to remove
...

我想保留“BEGIN READ”和“END READ”之间的部分,不包括那些触发器。如何过滤掉这些行?

4

2 回答 2

4

您可以使用Enumerable.SkipWhileandTakeWhile来处理这个问题:

var linesOfInterest = lines
                        .SkipWhile(l => l != "BEGIN READ")
                        .Skip(1)
                        .TakeWhile(l => l != "END READ");

这将返回这两个标签之间的行。额外Skip(1)的内容可以跳过实际的"BEGIN READ"行本身。

于 2013-08-01T19:38:05.793 回答
2
var lines = File.ReadLines(fname)
                .SkipWhile(line => line != "BEGIN READ")
                .TakeWhile(line => line != "END READ")
                .Skip(1)
                .ToList();
于 2013-08-01T19:40:05.113 回答