我希望得到字符串中最长的子字符串的长度,以","
分隔例如:
test1,test11,test111 - > test111的长度 - > 7
答案 0 :(得分:8)
input.Split(',').Max( s => s.Length );
String.Split
返回String[]
Max
返回选择器回调答案 1 :(得分:3)
Split
可能效率低下(数组创建)。好的旧while
循环可以在没有额外内存分配的情况下解决问题:
// Huge string example (about 800M characters)
// string source = string.Join(",", Enumerable
// .Range(1, 40000).Select(i => new string('*', i)));
// Test source
string source = "test1,test11,test111";
int max = 0;
int start = 0;
while (start >= 0) {
int index = source.IndexOf(',', start);
int length = (index < 0) ? source.Length - start : index - start;
max = max > length ? max : length;
if (index < 0)
break;
start = index + 1;
}
Console.Write(max);
答案 2 :(得分:1)
var words= "test1,test11,test111".Split(',').ToList();
var res= words.Aggregate((max, cur) => max.Length > cur.Length ? max : cur);
答案 3 :(得分:0)
你可以使用一点Linq:
inputString.Split(',').OrderBy(s => s.Length).First().Length;
答案 4 :(得分:0)
试试这个
var longestsubstring = inputString.Split(',')
.OrderByDescending(x => x.Length)
.First().Length;