gpt4 book ai didi

java - 如何使用 Java Stream 在 Java 中查找包含某个单词的行数?

转载 作者:行者123 更新时间:2023-12-05 08:49:01 25 4
gpt4 key购买 nike

我的方法将从文本文件中读取并在每一行中找到单词“the”并计算包含该单词的行数。我的方法确实有效,但问题是我只需要包含单词本身的行,而不是单词的子字符串

例如,我不想要“因此”,即使它包含“the”,但它本身不是。

我正在尝试找到一种方法来将行限制为包含“the”并且单词的长度恰好为 3 的行,但我无法做到这一点。

这是我现在的方法:

public static long findThe(String filename) {
long count = 0;

try {
Stream<String> lines = Files.lines(Paths.get(filename));
count = lines.filter(w->w.contains("the"))
.count();

}
catch (IOException x)
{
// TODO Auto-generated catch block
System.out.println("File: " + filename + " not found");
}


System.out.println(count);
return count;
}

例如,如果一个文本文件包含这些行:

This is the first line
This is the second line
This is the third line
This is the fourth line
Therefore, this is a name.

该方法将返回 4

最佳答案

使用正则表达式强制执行单词边界:

count = lines.filter(w -> w.matches("(?i).*\\bthe\\b.*")).count();

或者对于一般情况:

count = lines.filter(w -> w.matches("(?i).*\\b" + search + "\\b.*")).count();

详细信息:

  • \b 表示“字边界”
  • (?i) 表示“忽略大小写”

使用单词边界可以防止 “Therefore” 匹配。

请注意,在 Java 中,与许多其他语言不同,String#matches() 必须匹配整个 字符串(而不仅仅是在 字符串)以返回 true,因此正则表达式两端的 .*

关于java - 如何使用 Java Stream 在 Java 中查找包含某个单词的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65281766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com