计数从linq开始

时间:2014-07-22 06:39:29

标签: c# linq

所以我有一个关于如何计算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();
}

它适用于我拥有的测试用例。但我的问题是,这可以通过更简单的方式完成吗?

2 个答案:

答案 0 :(得分:7)

if (!source.StartsWith(target)) return 0;
return target.Length;

答案 1 :(得分:4)

您可以尝试

return source.StartsWith(target, StringComparison.OrdinalIgnoreCase) ? target.Length : 0;