【发布时间】:2016-02-08 05:20:59
【问题描述】:
我正在尝试使用 C# 计算字符串中所有 double 字符的数量,即 "ssss" 应该是两个双打而不是三个双打。
例如,现在我必须像这样在字符串中执行 for 循环
string s="shopkeeper";
for(int i=1;i<s.Length;i++) if(s[i]==s[i-1]) d++;
最后d的值应该是1
有没有更短的方法来做到这一点?在 linq 或正则表达式中?什么是性能影响,最有效的方法是什么?感谢您的帮助
我已阅读 [How to check repeated letters in a string c#] 和 这很有帮助,但不解决双字符,我正在寻找 双字符
【问题讨论】:
-
我认为,这是最好的方法(简单快速)
-
@Backs 谢谢我注意到 for 循环比正则表达式更快,我现在需要一个 linq 版本来明确比较选择哪种方法
-
你应该坚持你的解决方案。 Linq 不能比这更快。 Linq 不是巫术魔法,而是其底层的普通代码。
-
好吧,你的
for循环也给出了 5。ssss是 3 对s,而不是 2,小心:) -
这是您想要的调整:
if (s[i] == s[i - 1]) { d++; i++; }