我需要一些有效的方法来计算.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();
第一行足以以此文本格式获取列数。
答案 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;