C# 有效的列计数方法
我需要一些有效的方法来计算.txt文件中的列数。我的文件格式: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
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我刚才复制了他那部分的代码。好的,我已经解决了。实际上它不是三个空格,它的“制表符分隔符”,只要我不能在这里使用它,我就用三个空格,不管怎样,这不是问题的关键-三个或四个空格或任何其他分隔符都不重要。。。