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

    • 截取字符串统计字符串出现次数
    • 通过替换字符串,统计字符串出现次数
    • 通过正则表达式,统计字符串出现次数
    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;
        }
        
    }


    原文链接
     


     

  • 相关阅读:
    PHP 面试踩过的坑(三)
    明天准备离职了,面对照顾自己的领导,要这样说
    别怕!MySQL引起的CPU消耗过大,我有办法
    值得收藏:一份非常完整的 MySQL 规范(一)
    emacs 快捷键设置 基础知识篇
    Ruby快速入门(三):控制语句
    Ruby快速入门(一):安装、运行、类和对象
    Ruby快速入门(二):变量、数字、数组和运算符
    Ruby快速入门(四):类和模块
    emacs安装autocomplete插件
  • 原文地址:https://www.cnblogs.com/ConstXiong/p/12164934.html
Copyright © 2011-2022 走看看