使用百万行代码解析文本文件

时间:2015-08-22 16:20:59

标签: c# parsing text

我需要使用以下格式解析文本文件:

and -0.436527 -0.515304 -0.002056 -0.227969 0.177528 0.201756...
with 0.101336 0.493859 -0.081095 -0.391502 -0.111579 0.388659...
voice -0.168610 0.413912 0.423446 0.484159 -0.546614 0.558571...

可能有100个这样的尾随数字。现在我需要搜索某个文本,比如说语音并将数字存储在一个数组或任何更快的数据结构中,并对它们进行一些数学运算。实现它的最快方法是什么? 文本文件的大小可能是100 + MB!

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试使用File.ReadLines并使用LINQ解析结果:

double[] numbers = File.ReadLines(path)
                    .Where(line => line.Contains("voice"))
                    .SelectMany(line => line.Split())
                    .Where(str => str.All(c => Char.IsDigit(c) || c == '-' || c == '.'))
                    .Select(str => Double.Parse(str, CultureInfo.InvariantCulture))
                    .ToArray();