首页 新闻 会员 周边

C# 如何判断一个字符在字符串中连续出现了几次?

0
[已解决问题] 解决于 2015-10-17 15:33

C# 如何判断一个字符在字符串中连续出现了几次?

比如 string str="ABCAADCBAGAAAFJK";

我想知道字符"A"在str中连续出现的次数和位置,这个结果应该是:

连续出现两次,位置在 3,4,

连续出现三次,位置在 10,11,12

大家有什么想法和建议都可以提,请园友们指教!

晓菜鸟的主页 晓菜鸟 | 老鸟四级 | 园豆:2594
提问于:2015-10-16 10:08
< >
分享
最佳答案
1
           string str = "ABCAADCBAGAAAFJK你你好吗吗";

            Regex reg = new Regex(@"(.)(\1)+");
            MatchCollection matchs = reg.Matches(str);
            if (matchs != null)
            {
                foreach (Match m in matchs)
                {
                    string mValue = m.Value;
                    Console.WriteLine("连续出现{0}次,{1},起始位置为{2}", mValue.Length,mValue,m.Index);
                }
            }

            Console.Read();

结果为:

奖励园豆:5
clarlespeng | 菜鸟二级 |园豆:469 | 2015-10-16 11:34

嗯,谢谢了,简单明了!用正则轻松实现,学习了!

晓菜鸟 | 园豆:2594 (老鸟四级) | 2015-10-17 07:56
其他回答(4)
0

for(int i=0;i<str.length;i++){if(str[i]=='A')list.add(i)}

循环list,当下一个不等于当前+1时并且上一个等于当前-1时,往前读取到上一个不等于当前-1得到当前位置之前的连续出现次数和位置,循环结束就输出完了

还有些细节,比如最前面和最后面.写的时候注意下就可以了

吴瑞祥 | 园豆:29449 (高人七级) | 2015-10-16 10:17

谢谢翔哥,明白了!

支持(0) 反对(0) 晓菜鸟 | 园豆:2594 (老鸟四级) | 2015-10-16 15:36
0

up楼上

夜空下的男子 | 园豆:31 (初学一级) | 2015-10-16 10:19
0
int count = 0;
string str = "sfsfluljslfnslafuensdfre";
foreach(char c in str)
{
    if(c == 's')
    {
        count++;
    }
}

return count;
如此低调的男人 | 园豆:842 (小虾三级) | 2015-10-16 10:50

这样只能获取出现的次数,而不能判断是否连续,楼下的方法可以,使用正则匹配一下就行!

支持(0) 反对(0) 晓菜鸟 | 园豆:2594 (老鸟四级) | 2015-10-17 07:56
0

Firen | 园豆:5385 (大侠五级) | 2015-10-16 13:01

嗯,谢谢回答,跟1L的思路一样,不过用正则能简化一下代码!

支持(0) 反对(0) 晓菜鸟 | 园豆:2594 (老鸟四级) | 2015-10-17 07:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册