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

Posted constxiong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统计一段长字符串中某字符串的出现次数相关的知识,希望对你有一定的参考价值。

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

 

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

 


原文链接
 


技术图片

 

 

以上是关于统计一段长字符串中某字符串的出现次数的主要内容,如果未能解决你的问题,请参考以下文章

Java编程练习之判断Java文件名是否正确,判断邮箱格式是否正确和统计指定字符串中某字符现的次数

JSK-27321 统计单词数字符串

使用Counter进行计数统计

excel中怎么统计表格中某一数据出现的次数,注:每一表格中有多个数据。

字符串中某一子串出现的次数

字符串中某一子串出现的次数