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

标签 java string search text

我是 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/

相关文章:

c# string Trim 不起作用,一个奇怪的问题

python - Python多处理中的字符串参数

datetime - solr搜索时间范围内的时间

java - 是否有在 Spring Boot 上下文中查询巨大 CSV 的最佳实践?

c++ - while 循环中的减法。 C++

php - Laravel Model 中多列数据的搜索范围

string - Boyer Moore 寻找小 key

Java:如何在 MySQL 中存储 MediumBlob

java - Oracle Java 程序新开发的编码问题

java - 嵌套循环说明 - 已编辑