string s = "do do switchdo do od d o dododoodo do doswitch";
var parts = s.Split(new[] { "switch" }, StringSplitOptions.None);
var doCount = parts.Skip(1).Sum(p => p.Split(new[] { "do" }, StringSplitOptions.None).Length - 1);
Console.WriteLine(doCount);
没有正则表达式是可能的:
拆分为
"switch",通过跳过第一部分开始计数(它就在第一次出现之前"switch"):对于每个部分,拆分为"do"并从部分数中减去 1。我们把所有东西放在一起。