[英]C#: how to get the length of string in string[]
我在C#中有一个字符串集合。 我的代码如下所示:
string[] lines = System.IO.File.ReadAllLines(@"d:\SampleFile.txt");
我想做的是在该集合中找到字符串的最大长度,并将其存储在变量中。 目前,我手动编写此代码,例如?
int nMaxLengthOfString = 0;
for (int i = 0; i < lines.Length;i++ )
{
if (lines[i].Length>nMaxLengthOfString)
{
nMaxLengthOfString = lines[i].Length;
}
}
上面的代码为我完成了工作,但是我正在寻找一些内置函数来保持效率,因为myfile中将有数千行:(
使用LINQ的更简单方法是:
int maxLength = lines.Max(x => x.Length);
请注意,如果您使用的是.NET 4,则无需先将所有行读入数组,如果稍后不再需要它们:
// Note call to ReadLines rather than ReadAllLines.
int maxLength = File.ReadLines(filename).Max(x => x.Length);
(如果您不使用.NET 4,则很容易编写等效于File.ReadLines
。)
这将是在内存方面更有效,但根本上,你将不得不从磁盘中读取每一行,你会需要遍历这些行找到的最大长度。 当然,磁盘访问可能是瓶颈。
如果不是更好,效率当然不会变差 。
但是,如果您希望简洁 ,请尝试使用LINQ的lambda:
lines.Aggregate((a, b) => Math.Max(a.Length, b.Length));
顺便说一句,次要点:从技术上讲,如果剩余数据量小于找到的最长行,则可以停止读取。 因此,尽管可能不值得编写代码,但从技术上讲,您可以节省一些步骤。
完全无关紧要,但是只是因为我觉得这样,所以这是(优雅的!)Scheme版本:
(reduce max (map length lines))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.