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