专注于知识
经验、资源的分享

C#实现从字符串中提取出现最多的字符

今天有个同事问我,如何提取字符串中出现最多的字符,我当时的思路是使用Dictionary以字符为key,字符出现的次数为value,然后获取字符出现的次数最多的字符,后来在网上在另一种方法,使用Replace计算出字符出现的次数,这的确是最简单有效的方法。

例如字符串1921680105888,使用Replace(1,string.Format(“{0}#”, 1),返回的结果是1#921#6801#05888,再用新字符串的长度减去源字符串的长度就是字符出现的次数。

         ///   
        /// 取字符串中出现最多次数的字符  
        ///   
        /// 字符串  
        /// 出现次数  
        /// 出现最多的字符  
        static string GetChar(string inputString, out int number)
        {

            //inputString:192.168.0.105:8888
            char[] chars = inputString.ToCharArray();
            number = int.MinValue;
            int originalLength = inputString.Length;
            string cstr = "";
            foreach (var c in chars)
            {
                //CultureInfo.InvariantCulture用于同一数据适应不同地区和文化,多用于数字,日期时间,字符串匹配
                //第一次返回的字符串是1#92.1#68.0.1#05:8888,增加了3个字符串,说明出现了3次
                int len = inputString.Replace(c.ToString(CultureInfo.InvariantCulture), string.Format("{0}#", c)).Length - originalLength;
                if (len > number)
                {
                    number = len;
                    cstr = c.ToString(CultureInfo.InvariantCulture);
                }
            }
            return cstr;
        }  

赞(0) 打赏
本文原创转载请注明出处:阿斌分享 » C#实现从字符串中提取出现最多的字符
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏