计算列数的有效方法

Efficient way to count 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();

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

几乎已经快到极限了。如果您需要转换,只需这样做:

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

使用 Length 而不是 Count 可以为您保存集合的枚举。如果您不需要转换,只需:

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

否则,您仍然需要始终进行读取,并且始终 Split 行。既然没有办法解决这个问题,那就尽快吧。

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

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

这会快多少,我不确定,即使会有差异我相信也可以忽略不计。

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

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

return columnCount;