计算列的有效方法

时间:2015-01-22 21:27:08

标签: c# count text-files multiple-columns

我需要一些有效的方法来计算.txt文件中的列。我的文件格式:

123.222  333.333  454.45  453.333
14.222  3.333  434.45  423.333
33.2  223.333  434.45  153.333

所以我尝试了这个:

StreamReader sr = new StreamReader(_path);
int ColumnsCount = Array.ConvertAll(sr.ReadLine().Split('  '), Double.Parse).Count();

第一行足以以此文本格式获取列数。

3 个答案:

答案 0 :(得分:6)

几乎尽可能快。如果您需要转换,请执行以下操作:

int ColumnsCount = Array.ConvertAll(sr.ReadLine().Split(' '), Double.Parse).Length;

使用Length代替Count可以为您保存集合的枚举。如果需要转换,只需执行:

sr.ReadLine().Split(' ').Length;

否则,您仍然需要始终执行读取,并始终Split该行。由于无法解决这个问题,所以可以尽可能快地进行。

答案 1 :(得分:2)

您可以避免double.Parse,因为您只对列数感兴趣并使用Split删除空条目选项。您也可以使用File.ReadLine并阅读第一行,如:

string firstLine = File.ReadLines("filePath").First();
int ColumnsCount = 0;
if (firstLine != null)
{
    ColumnsCount = firstLine.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries).Length;
}

这将是多快多少,我不确定,即使存在差异,我相信它可以忽略不计。

答案 2 :(得分:0)

以下是对此的快速回答。无需进行字符串拆分,只需将字符串视为字符数组,并计算空格。这也假定您不能有0列表。

var columnCount = 1;
foreach(var c in File.ReadLines("filePath").First() ?? String.Empty)
{
   if (c == ' ')
   {
      columnCount++;
   }
}

return columnCount;