zoukankan      html  css  js  c++  java
  • 统计字符串中某个字符的出现次数

    引言:统计字符串中某个字符的出现次数其实可以直接使用apache commons lang包中的StringUtils.countMatches()方法,但觉得写的有点麻烦了,就自己实现了一个完成类似功能简单的方法

    1. 不废话,先代码:

    1、TestCountMatches 类:

    package test;
    
    public class TestCountMatches {
    
        public static void main(String[] args) {
            System.out.println(countMatched("abcdeeeee", "e"));
            System.out.println(countMatched("abcdeeab", "ab"));
        }
    
        /**
         * 统计出现次数
         * @param string 目标字符串
         * @param sub 目标子字符串
         * @return
         */
        public static int countMatched(String string, String sub){
            //判空,为空直接返回0,表示不存在
            if(StringUtil.isEmpty(string) || StringUtil.isEmpty(sub)){
                return 0;
            }
            int count = 0;
            int index;
            // 循环一次将出现的字符串索引向后移一位,计数器+1,并截取原字符串索引+1的字符串,
            // 如“abcdeeeee”第一次循环找到“e”索引4,substring(4+1)方法截取后得到新的字符串“eeee”,
            // 循环第二次找到“e”的索引0,substring(0+1)方法截取后得到新的字符串“eee”,,,以此类推
            while((index = string.indexOf(sub)) > -1){
                count++;
                string = string.substring(index + 1);
            }
            return count;
        }
    
    }
    

    2、StringUtil工具类:

    package test;
    
    public class StringUtil {
    
        /**
         * 判断字符串是否为空
         * @param string
         * @return
         */
        public static boolean isEmpty(String string){
            if(string == null || "".equals(string.trim())){
                return true;
            }
            return false;
        }
    
    }
    

    运行结果

    2. 再看一下Apache 提供的工具类apache commons lang方法countMatches():

    public static int countMatches(final CharSequence str, final CharSequence sub) {
            if (isEmpty(str) || isEmpty(sub)) {
                return 0;
            }
            int count = 0;
            int idx = 0;
            while ((idx = CharSequenceUtils.indexOf(str, sub, idx)) != INDEX_NOT_FOUND) {
                count++;
                idx += sub.length();
            }
            return count;
        }
    

    其实思路差不多,理解了最好自己动手写一下

  • 相关阅读:
    [转]理解java的三大特性之多态
    [转]java:IO流学习小结
    Base64 加密之中文乱码
    piwik优化之定时任务生成统计数据
    php统计中英文混合的文章字数
    Linux常用命令之定时任务
    skype在线状态代码详解
    php+google/baidu翻译接口
    php限制文件下载速度的代码
    PHP破解wifi密码(wifi万能钥匙的接口)
  • 原文地址:https://www.cnblogs.com/wang-zai/p/7799695.html
Copyright © 2011-2022 走看看