杰瑞科技汇

Java字符串出现次数怎么统计?

在Java中统计字符串出现次数

在Java中,有几种方法可以统计一个字符串在另一个字符串中出现的次数,以下是几种常见的实现方式:

Java字符串出现次数怎么统计?-图1
(图片来源网络,侵删)

方法1:使用String的indexOf()方法

public static int countSubstring(String str, String subStr) {
    int count = 0;
    int index = 0;
    while ((index = str.indexOf(subStr, index)) != -1) {
        count++;
        index += subStr.length();
    }
    return count;
}

方法2:使用正则表达式

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public static int countSubstringWithRegex(String str, String subStr) {
    Pattern pattern = Pattern.compile(Pattern.quote(subStr));
    Matcher matcher = pattern.matcher(str);
    int count = 0;
    while (matcher.find()) {
        count++;
    }
    return count;
}

方法3:使用Java 8的Stream API

import java.util.regex.Pattern;
public static long countSubstringWithStream(String str, String subStr) {
    return Pattern.compile(Pattern.quote(subStr))
                  .splitAsStream(str)
                  .count() - 1;
}

使用示例

public class Main {
    public static void main(String[] args) {
        String text = "hello world, hello java, hello programming";
        String word = "hello";
        int count1 = countSubstring(text, word);
        int count2 = countSubstringWithRegex(text, word);
        long count3 = countSubstringWithStream(text, word);
        System.out.println("方法1结果: " + count1);
        System.out.println("方法2结果: " + count2);
        System.out.println("方法3结果: " + count3);
    }
    // 这里插入上面任意一个方法实现
}

注意事项

  1. 如果subStr为空字符串,以上方法可能会返回异常结果或无限循环,需要添加检查:

    if (subStr == null || subStr.isEmpty()) {
        return 0;
    }
  2. 这些方法统计的是不重叠的出现次数,在"aaa"中统计"aa":

    • 方法1和2会返回1(不重叠)
    • 如果需要统计重叠的出现次数,需要修改方法1中的index += subStr.length();index++;
  3. 对于大小写敏感的统计,直接使用上述方法;对于不区分大小写的统计,可以在正则表达式方法中使用Pattern.CASE_INSENSITIVE标志。

选择哪种方法取决于你的具体需求和Java版本偏好,方法1是最通用的,方法2更灵活,方法3在Java 8+中更简洁。

Java字符串出现次数怎么统计?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇