0

我有一个文本文件......它存储数据,如......

E:0

S:0

R:0

G:0

E:1

小号:1

R:1

G:1

依此类推,直到 50 岁。我可以通过

StramReader.ReadLine();

但我怎么能读第一行

E:0

并跳到下一个 E: ,而不是介于两者之间

4

2 回答 2

3

有这种方法。但这将遍历每一行并选择包含 E 的行

var linesContainsE = File.ReadAllLines(filename)
    .Where(line => line.Contains("E"))
    .ToList();

(使用命名空间 System.Linq 和 System.IO)

有关来自 msdn 的 File.ReadAllLines 的更多信息:http: //msdn.microsoft.com/en-us/library/system.io.file.readalllines.aspx

于 2012-09-21T08:56:16.087 回答
1

强烈建议不要使用将所有行加载到内存中的 ReadAllLines。如果您有一个非常大的文件怎么办,使用 ReadAllLines 将没有效率。

另一种选择是ReadLines,它是延迟执行:

ReadLines 和 ReadAllLines 方法的区别如下: 使用 ReadLines 时,可以在返回整个集合之前开始枚举字符串集合;使用 ReadAllLines 时,必须等待返回整个字符串数组才能访问该数组。因此,当您处理非常大的文件时,ReadLines 会更有效率。

此外,不要使用 ,而是Contains使用StartWith

var linesContainsE = File.ReadLines(filename)
                         .Where(line => line.StartWith("E"))
                         .ToList();
于 2012-09-21T11:27:36.737 回答