我有一个很大的文本文件,看起来像这样,其中有一行,开头是A,结尾是C,中间有x个B:
A
B
B
B
C
获取A,B或C出现次数的次数的最佳方法是什么?所有这些行都有更多的数据,但这是我想要达到的目的。
我是否必须读取整个文件,还是一次最好地读取一行?
答案 0 :(得分:2)
我认为类似的东西会起作用
foreach (var grouping in File.ReadAllLines("<file-path-here>").GroupBy(x => x[0]))
{
Console.WriteLine($"char: {grouping.Key}, count: {grouping.Count()}");
}
答案 1 :(得分:1)
下面的代码段是一个简单的实现:
int iBCount = File.ReadAllLines(filePath).Count -2;
int iACount = 1; // We already knew this
int iCCount = 1; // We already knew this
此外,如果您知道每行的字节大小(每行的大小必须相同)并且您担心性能,则可以按照以下方式简单地计算“ B”行的数量
// There will be no problem with typecast if each lines is the same length in bytes
int iBLines = (int)(new System.IO.FileInfo(pathToFile).Length / FIXED_LINE_SIZE_IN_BYTES);
答案 2 :(得分:0)
string [] lines = File.ReadAllLines(filePath)
int A_count = 0, B_count = 0, C_count = 0;
foreach (string line in lines)
{
switch(line[0])
{
case 'A':
A_count++;
break;
case 'B':
B_count++;
break;
case 'C':
C_count++;
}
}