gpt4 book ai didi

java - 搜索字符串只打印出没有附加字符的搜索

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:35 24 4
gpt4 key购买 nike

我是 Java 的新手,我正在做一个项目。我正在尝试在文本文件中搜索几个 4 个字符的首字母缩略词。它只会在只有 4 个字符而没有其他内容时显示或输出。如果有空格或其他字符附加到它不会显示它......我试图让它显示整行,但还没有成功。

文本文件内容:

APLM
APLM12345
ABC0
ABC0123456
CSQV
CSQVABCDE
ZIAU
ZIAUABCDE

控制台输出:

APLM
ABC0
CSQV
ZIAU

我的代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;

public class searchPdfText
{
public static void main(String args[]) throws Exception
{
int tokencount;
FileReader fr = new FileReader("TextSearchTest.txt");
BufferedReader br = new BufferedReader(fr);

String s = "";
int linecount = 0;
ArrayList<String> keywordList = new ArrayList<String>(Arrays.asList("APLM", "ABC0", "CSQV", "ZIAU" ));

String line;
while ((s = br.readLine()) != null)
{
String[] lineWordList = s.split(" ");
for (String word : lineWordList)
{
if (keywordList.contains(word))
{
System.out.println(s);

break;
}
}
}
}
}

最佳答案

如果您查看 ArrayList.contains 的文档您会看到,只有当您的关键字包含您文件中提供的字符串时,它才会返回 true。因此,当您的代码仅输出为 keywordList 中提供的字符串找到的完全匹配时,您的代码是正确的。

相反,如果您想在提供的字符串的一部分包含关键字时获得匹配项,请考虑遍历输入并以相反的方式匹配它:

while ((s = br.readLine()) != null) {
String[] lineWordList = s.split(" ");
for (String word : lineWordList) {
// JAVA 8
keywordList.stream().filter(e -> word.contains(e)).findFirst()
.ifPresent(e -> System.out.println(word));

// JAVA <8
for (String keyword : keywordList) {
if (word.contains(keyword)) {
System.out.println(s);
break;
}
}
}
}

此外,您可以考虑关注 Oracle's Java Naming Conventions关于你的类(class)名称。类(class)名称中的每个单词都应该大写。例如,您的类(class)最好命名为 SearchPdfText

关于java - 搜索字符串只打印出没有附加字符的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33109928/

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