Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:如何获取字符串[]中字符串的长度_C# - Fatal编程技术网

C#:如何获取字符串[]中字符串的长度

C#:如何获取字符串[]中字符串的长度,c#,C#,我有一组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>nM

我有一组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;
   }
}
int nMaxLengthOfString=0;
对于(int i=0;inMaxLength of字符串)
{
nMaxLengthOfString=行[i]。长度;
}
}

上面的代码为我做了这项工作,但我正在寻找一些内置函数以保持效率,因为myfile中将有上千行:(

在您的情况下,效率肯定不会更差,如果不是更好的话

但如果您希望简洁,请尝试LINQ的lambdas:

lines.Aggregate((a, b) => Math.Max(a.Length, b.Length));

顺便说一句,次要的一点是:如果剩下的数据量小于您找到的最长行,您可以从技术上停止读取。因此,您可以从技术上节省一些步骤,尽管这可能不值得编写代码


完全不相关,但只是因为我喜欢,这里是(优雅的!)方案版本:

(reduce max (map length lines))

使用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
等效的代码就很容易了)


这在内存方面会更有效,但从根本上说,您必须读取磁盘上的每一行,并且您需要迭代这些行以找到最大长度。当然,磁盘访问可能是瓶颈。

我不知道
Max
..的过载情况。)AFAIK-没有内置的函数来执行此操作。然而,它们可能是写同样东西的其他方式。例如,使用LINQ或使用Max函数。。。。与C#没有直接关系,但Python中有一个关于同一主题的线程-您可以阅读if以供参考: