java - 如何在java中比较整个字符串中的单词并增加其计数?
问题描述
我有一个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"
)
我想计算REPO 的数量。在整个字符串中。所以,我尝试过这种方式,但它不起作用。
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.
中被看到了一次。我的输出需要是count is:1
.
解决方案
w.equals("\\bREPO.\\b")
比较w
与\\bREPO.\\b
字面的内容,因此你得到一个错误的结果。
您可以计算REPO
使用 regex API 的次数。
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 开始,您可以使用Matcher#results
来获取一个Stream
可以调用的对象count
,如下所示:
long count = matcher.results().count();
注意:我使用文本块功能使文本块看起来更具可读性。您可以以 Pre-Java15 的方式形成字符串。
推荐阅读
- reactjs - 我可以在生产中使用 React suspense 吗?
- azure - 在 Azure 数据工厂中动态获取嵌套输出
- python - 在 Pycharm 中使用调试模式在执行时评估代码
- javascript - 如何检查 instagram.com/embed.js 是否已在 javascript/jquery 中加载?
- python - 每个主键的 Pandas 仅将具有最大值的行保留到另一列中
- excel - 如何使用 VBA 根据 Excel 中的关键字对文本字符串进行分类?
- fortran - 使用在线 Fortran 编译器从标准输入读取时出现“文件结尾”
- mysql - MySQL 插入失败,索引上有重复条目
- javascript - 在javascript变量中使用Jquery Selectors是否正确以及如何使用ajax获取城市和地区?
- max-msp-jitter - 如何为空列表制作此 Max MSP/M4L 补丁更新 zl.len 和 zl.mth?