所以我有一个关于如何计算linq中字符串开头的问题。让我解释一些测试用例
测试案例#1
var target="test";
var source="test2";
输出应为4
测试用例#2
var target="te";
var source="test2";
输出应为2
测试案例#3:
var target="tet";
var source="test2";
输出应为0.因为源不以目标
开头所以我想出了这个功能:
private int CountStartsWith(string source, string target)
{
if (!source.StartsWith(target))
return 0;
return source.ToCharArray()
.Zip(target.ToCharArray(), (s1, s2) => (s1 == s2))
.TakeWhile(match => match)
.Count();
}
它适用于我拥有的测试用例。但我的问题是,这可以通过更简单的方式完成吗?
答案 0 :(得分:7)
if (!source.StartsWith(target)) return 0;
return target.Length;
答案 1 :(得分:4)
您可以尝试
return source.StartsWith(target, StringComparison.OrdinalIgnoreCase) ? target.Length : 0;