C# 有效的列计数方法

C# 有效的列计数方法,c#,count,text-files,multiple-columns,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

我需要一些有效的方法来计算.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;

否则,您仍然需要始终执行读取操作,并且始终
拆分
行。因为没有办法解决这个问题,所以您可以尽快解决。

您可以避免使用
double.Parse
,因为您只对列计数感兴趣,并使用
Split
和remove empty entries选项。您也可以使用
File.ReadLine
阅读第一行,如下所示:

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

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

这里有一个快速的答案。无需进行字符串拆分,只需将字符串视为字符数组,并计算空格。这还假设您不能有0列的表

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

return columnCount;

试试这个!它是不可编译的。将
'
(三个空格)更改为
'
(一个空格)或
'
(三个空格)。@QualityCatalyst我刚才复制了他那部分的代码。好的,我已经解决了。实际上它不是三个空格,它的“制表符分隔符”,只要我不能在这里使用它,我就用三个空格,不管怎样,这不是问题的关键-三个或四个空格或任何其他分隔符都不重要。。。