• 统计一段长字符串中某字符串的出现次数


    • 截取字符串统计字符串出现次数
    • 通过替换字符串,统计字符串出现次数
    • 通过正则表达式,统计字符串出现次数
    package constxiong.interview;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * 统计一段长字符串中某字符串的出现次数
     * @author ConstXiong
     * @date 2019-11-13 11:01:22
     */
    public class TestCountWordTimesInText {
    
        public static void main(String[] args) {
            String text = "统计一CX段长CX字符串中某字符串的出C现X次cx数";
            String word = "CX";
            System.out.println(countWordTimesByCutString(text, word));
            System.out.println(countWordTimesByReplace(text, word));
            System.out.println(countWordTimesByRegex(text, word));//正则匹配,需要注通配符的使用对结果的影响
        }
    
        /**
         * 截取字符串统计字符串出现次数
         * @param text
         * @param word
         * @return
         */
        public static int countWordTimesByCutString(String text, String word) {
            int times = 0;
            if (!isEmpty(text) && !isEmpty(word)) {
                String subText = text;
                int index = -1;
                int wordLength = word.length();
                while (subText.length() >= wordLength && (index = subText.indexOf(word)) > -1) {
                    subText = subText.substring(index + wordLength);
                    times++;
                }
            }
            return times;
        }
        
        /**
         * 通过替换字符串,统计字符串出现次数
         * @param text
         * @param word
         * @return
         */
        public static int countWordTimesByReplace(String text, String word) {
            int times = 0;
            if (!isEmpty(text) && !isEmpty(word)) {
                times = (text.length() - text.replace(word, "").length()) / word.length();
            }
            return times;
        }
        
        /**
         * 通过正则表达式,统计字符串出现次数
         * @param text
         * @param word
         * @return
         */
        public static int countWordTimesByRegex(String text, String word) {
            int times = 0;
            if (!isEmpty(text) && !isEmpty(word)) {
                Pattern p = Pattern.compile(word);
                Matcher m = p.matcher(text);
                while (m.find()) {
                    times++;
                }
            }
            return times;
        }
        
        /**
         * 字符串是否为空
         * @param str
         * @return
         */
        private static boolean isEmpty(String str) {
            return str == null || str.length() == 0;
        }
        
    }


    原文链接
     


     

  • 相关阅读:
    迭代器
    装饰器
    函数对象和闭包
    函数的使用
    文件操作
    基本数据类型及内置方法
    MySQL数据库
    网络编程进阶(进程、线程、协程、IO模型)
    网络编程基础---网络通讯原理、ssh远程执行命令、粘包问题处理、文件传输处理
    面向对象、类、元类、封装、异常处理
  • 原文地址:https://www.cnblogs.com/ConstXiong/p/12164934.html
Copyright © 2020-2023  润新知