C# 如何通过两个或多个字母计算字符串上的精确匹配

C# 如何通过两个或多个字母计算字符串上的精确匹配,c#,string,linq,C#,String,Linq,我有一个简单的字符串: string code = "HelloWorld"; 现在我想计算以下各项的精确匹配: string match = "ll" 我的预期结果是: 1 因为在“HelloWorld”中只有一个完全匹配的双ll 我正试图通过拆分来实现: var splitted = code.Split(new string[]{ "l", "l" }, StringSplitOptions.None); 但正如你所料,如果有一个匹配的单一“l”,它也将分裂它,所以我不能保证一个良

我有一个简单的字符串:

string code = "HelloWorld";
现在我想计算以下各项的精确匹配:

string match = "ll"
我的预期结果是:

1
因为在“HelloWorld”中只有一个完全匹配的双ll

我正试图通过拆分来实现:

var splitted = code.Split(new string[]{ "l", "l" }, StringSplitOptions.None);
但正如你所料,如果有一个匹配的单一“l”,它也将分裂它,所以我不能保证一个良好的计数

我试图用一个二进制数:

1011010110110

我想知道它有多少个“10”。在我的示例中,它有5个精确的10。

请注意,这不需要LINQ-这可以通过使用字符串方法(如and IndexOf)或使用正则表达式匹配来实现

以下代码是最简单但次优的代码,因为它创建了一个额外的数组:

"HelloWorld".Split(new[] { "ll" }, StringSplitOptions.None).Length-1;
另外,正如@Sweeper指出的,您可以使用正则表达式。 如果你想避免使用正则表达式,你可以这样做一个小的代码片段:(注意:跳过了参数检查的简洁性,但你应该添加它们)


尝试使用正则表达式。将字符串与正则表达式匹配,并计算有多少个匹配项

Regex.Matches("Hello", "ll").Count
这将评估为1


记住使用System.Text.RegularExpressions

为什么不使用两个l字符“ll”进行拆分呢?您真的需要LINQ吗?使用字符串方法就足够了,
lll
的输出是什么?2或1?我使用以下方法测试它:var test=“10110110”.Split(new[]{“10”},StringSplitOptions.removeMptyEntries).Length-1;但是它返回2而不是5。我想,当你删除
StringSplitOptions.removeMptyEntries
选项和
-1
@JirkaPicek,是的-我没有料到
StringSplitOptions.removeMptyEntries
@WillyDavidJr会出现这种行为。你是对的-谢谢你指出,我已经修复了代码,现在有两种方法
Regex.Matches("Hello", "ll").Count