码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-01-08 10:58:48      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:https   bool   cut   test   word   turn   pre   pat   att   

  • 截取字符串统计字符串出现次数
  • 通过替换字符串,统计字符串出现次数
  • 通过正则表达式,统计字符串出现次数

 

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

 


原文链接
 


技术图片

 

 

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

标签:https   bool   cut   test   word   turn   pre   pat   att   

原文地址:https://www.cnblogs.com/ConstXiong/p/12164934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!