繁体   English   中英

查找字符串中 substring 的出现次数

[英]finding the number of occurence of a substring in a string

我想在一个字符串中找到 substring 的出现次数,我在 java 中实现了以下代码:

Pattern mypattern=Pattern.compile("a");
Matcher mymatcher=mypattern.compile("aaaaaa");
int cnt=0;
while(mymatcher.find()){
    cnt++;
)
System.out.println(cnt);

但是当我希望 function 也计算相交字符串时它不起作用,例如我希望在 aaaaaa 中搜索 aa 的答案是 5,但上面的程序会显示它 3。我该怎么做?

正则表达式中可以使用正向前瞻(?=(aa))来处理重叠匹配:

System.out.println(Pattern.compile("(?=(aa))").matcher("aaaaaa").results().count());

// 5

如果您在aaaaaa中搜索aa的出现,此代码将为您提供所需的 5 计数。

Pattern mypattern = Pattern.compile("aa");
Matcher mymatcher = mypattern.matcher("aaaaaa");
int cnt = 0;
int start = 0;
while (mymatcher.find(start)) {
    start = mymatcher.start() + 1;
    cnt++;
}
System.out.println(cnt);

您可以使用 Apache Commons Lang 库:

System.out.println(StringUtils.countMatches(str, subStr));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM