计算文本文件中的行数

本文关键字:文本 文件 计算 | 更新日期: 2023-09-27 18:21:06

我在一个文本文件中有以下行,我需要知道有多少行以Y结尾,有多少行是以N结尾。

在Y之后和N之后有一个空格。

速度越快越好,因为它可能包含大约一百万行。(所以我不想遍历每一行)

计算文本文件中的行数

当然,需要循环遍历每一行。真的无法回避。然后,您可以使用LINQ来比较容易地计算它们:

var query = File.ReadLines("file.txt")
                .Select(line => new { Y = line.EndsWith("Y ") ? 1 : 0,
                                      N = line.EndsWith("N ") ? 1 : 0 })
                .Aggregate(new { Y = 0, N = 0 },
                           (current, next) => new { Y = current.Y + next.Y,
                                                    N = current.N + next.N });
var yCount = query.Y;
var nCount = query.N;

如果Y/N后面没有正好一个空格,请将其更改为使用Trim()。。。例如:

var query = File.ReadLines("file.txt")
                .Select(line => line.Trim())
                .Select(line => new { Y = line.EndsWith("Y") ? 1 : 0,
                                      N = line.EndsWith("N") ? 1 : 0 })
// remainder of code as before

这将在整个文件中迭代一次,并按顺序计数。诚然,它创建了很多对象,但GC非常好。它不会将整个文件拉入内存,也不会读取两次。