当前位置: 首页 > 知识库问答 >
问题:

如何在一个文件中搜索字符串,然后在另一个文件中搜索字符串

蒯胜泫
2023-03-14

我试图创建一个java程序,它可以读取一个名为file1.txt的文件,存储它的字符串,并将这些字符串搜索到另一个名为file2.txt的文件,如果没有找到匹配,则从file1.txt打印特定的字符串。

public static void main(String[] args)
{
    try
    {
        BufferedReader word_list = new BufferedReader(new FileReader("file1.txt"));
        BufferedReader eng_dict = new BufferedReader(new FileReader("file2.txt"));

        String spelling_word = word_list.readLine();
        String eng_dict_word = eng_dict.readLine();

        while (spelling_word != null)
        {
            System.out.println(spelling_word);
            spelling_word = word_list.readLine();

            if(eng_dict_word.contains(spelling_word))
            {
                System.out.println("Word found "+spelling_word);
            }
            else
            {
                System.out.println("Word not found "+spelling_word);
            }
        }
        word_list.close();
    }
    catch (IOException e) 
    {
        e.printStackTrace();
    }
}

现在我可以从file1.txt获得数据,但无法搜索file1的数据,例如在file2.txt中搜索单词“home”

请看这里的file1.txt包含Homee,而file2.txt有Home,所以Homee应该是打印的

共有1个答案

周麒
2023-03-14

首先,您需要读取第一个文件。最好是set(),因为它将消除重复的字符串。您将有set1

完成后,您需要读取第二个文件,并执行相同的操作。您将获得set2

现在,您需要在set1上使用removeAll()方法,并将set2作为参数。set1中剩余的内容需要在Scren上打印。你可以用Lambda做。

请参见此以了解如何读取文件。

请参见下面的代码:

    Set<String> set1 = new HashSet<>();
    Set<String> set2 = new HashSet<>();

    try (FileReader reader = new FileReader("file1.txt");
         BufferedReader br = new BufferedReader(reader)) {

        // read line by line
        String line;
        while ((line = br.readLine()) != null) {
            set1.add(line);
        }

    } catch (IOException e) {
        System.err.format("IOException: %s%n", e);
    }

    try (FileReader reader = new FileReader("file2.txt");
         BufferedReader br = new BufferedReader(reader)) {

        // read line by line
        String line;
        while ((line = br.readLine()) != null) {
            set2.add(line);
        }

    } catch (IOException e) {
        System.err.format("IOException: %s%n", e);
    }

    set1.removeAll(set2);
    set1.forEach(System.out::println);
 类似资料:
  • 问题内容: 我想检查字符串是否在文本文件中。如果是,请执行X。否则,请执行Y。但是,True由于某些原因,此代码始终返回。谁能看到错在哪里? 问题答案: 你一直得到的原因已经给出,因此我只提供另一个建议: 如果你的文件不是太大,则可以将其读取为字符串,然后使用它(比读取和检查每行更容易,并且通常更快): 另一个技巧:通过使用创建使用基础文件的“字符串状”对象(而不是读取内存中的整个文件),可以减轻

  • 问题内容: 我正在寻找将某些字符串搜索到某些文件夹结构中的最快方法。我知道可以使用file_get_contents从文件中获取所有内容,但是我不确定是否很快。也许已经有一些可以快速运行的解决方案。我正在考虑使用scandir获取所有文件,并使用file_get_contents读取其内容,并使用strpos来检查字符串是否存在。 您认为这样做有更好的方法吗? 或者也许试图与grep一起使用php

  • 问题内容: 我想要一个自动完成功能。我对数据类型的属性有简短的描述性字符串。我在redis中有一个ID列表,其中包含按创建日期排序的数据类型,并且使用ID来设置和获取该数据类型的属性,如redis类型文档中所述。我不使用哈希表。在此设置下,获取与输入到自动完成输入框中的内容相匹配的字符串集的最佳方法是什么?遍历所有id并检查我要搜索的属性- 对于每次击键,这似乎是错误的方法。 编辑: 除了下面的答

  • 本文向大家介绍在Java中搜索字符串中的字符。,包括了在Java中搜索字符串中的字符。的使用技巧和注意事项,需要的朋友参考一下 您可以使用String类的方法在字符串中搜索特定字母。此方法返回字符串中单词的位置索引(如果找到)。否则返回-1。 示例 输出结果

  • 问题内容: 在SQLite中搜索子字符串的最有效方法是什么? 我在看LIKE运算子。 我有正确的主意吗?这对您来说效果很好吗? http://www.sqlite.org/lang_expr.html 谢谢你。 问题答案: 是的,请使用“赞”。 将返回名称列中任何位置带有“ omm”的行。