如何在java中比较整个字符串中的单词并增加其计数?

如何在java中比较整个字符串中的单词并增加其计数?,java,Java,我有一个字符串replacedtext,它是: Replaced text:OPTIONS (ERRORS=5000) LOAD DATA INFILE * APPEND INTO TABLE REPO.test Fields terminated by "," optionally enclosed BY '"' trailing nullcols ( CODE , user, date DATE "MM/DD/YYYY" ) 我想计算整个字

我有一个
字符串replacedtext
,它是:

Replaced text:OPTIONS (ERRORS=5000)
LOAD DATA
INFILE *
APPEND INTO TABLE REPO.test
Fields terminated by "," optionally enclosed BY '"'
trailing nullcols
(
CODE ,
user,
date DATE "MM/DD/YYYY"
)
我想计算整个字符串中回购的数量。。因此,我尝试了这种方法,但不起作用

String[] words = replacedtext.split("\\s+");
        int count=0;
       for(String w:words){​​​​​​​
           if(w.equals("\\bREPO.\\b")){​​​​​​​
               count++;
           }​​​​​​​
       }​​​​​​​
System.out.println ("count is :"+count);
输出为:

count is :0
因为在字符串
REPO中,
只出现一次。我的输出需要是
计数是:1
w.equals(\\bREPO\\b”)
w
的内容与
\\bREPO\\b
进行逐字比较,因此得到了错误的结果

您可以使用正则表达式API计算
REPO
的出现次数

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String replacedText = """
                Replaced text:OPTIONS (ERRORS=5000)
                LOAD DATA
                INFILE *
                APPEND INTO TABLE REPO.test
                Fields terminated by "," optionally enclosed BY '"'
                trailing nullcols
                (
                CODE ,
                user,
                date DATE "MM/DD/YYYY"
                )
                """;

        Matcher matcher = Pattern.compile("\\bREPO\\b").matcher(replacedText);

        int count = 0;
        while (matcher.find()) {
            count++;
        }

        System.out.println(count);
    }
}
输出:

1
请注意,
\b
用作

Java SE 9之后,您可以使用获取一个
,您可以调用该流,如下所示:

long count = matcher.results().count();

注意:我曾经让文本块看起来更可读。您可以用Java15之前的方式形成字符串。

这里可能有两个问题
是一种特殊符号,它只表示一个字符。因此,您的
回购测试将不匹配

第二个问题是
equals
方法。您应该使用
matcher
或只按正则表达式过滤,然后计数

我会这样做:

int count = Pattern.compile("\\s").splitAsStream(replacedtext)
    .filter(Pattern.compile("\\bREPO\\b").asPredicate())
    .count()
System.out.println(count);
int count=(int)matcher.results().count()