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;
        }
    

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

  • 相关阅读:
    Bloom Filter(布隆过滤器)的概念和原理
    [转]模式匹配的KMP算法详解
    字符串搜索算法
    一个10转14进制的代码(写的很巧)
    几个优秀的js框架的license问题,付费,版权,侵权(extj,jquery,YUI,coolite)
    mysql时间戳转成常用可读时间格式方法两种
    单件模式(Singleton Pattern)
    建造者模式(Builder Pattern)
    [转]U盘隐藏文件恢复程序+源码
    [转载]内存分配 知识,全局,局部,静态变量
  • 原文地址:https://www.cnblogs.com/wang-zai/p/7799695.html
Copyright © 2011-2022 走看看