Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
找到一个单词并复制它所在的行';Java中的s_Java_Text Files - Fatal编程技术网

找到一个单词并复制它所在的行';Java中的s

找到一个单词并复制它所在的行';Java中的s,java,text-files,Java,Text Files,我正在尝试创建一个小程序,允许您在文本文件中搜索单词,然后该程序将打印出文本所在的整行 例如: test.txt don't mind this text don't mind this either 然后,当你让程序搜索“文本”这个词时,它应该打印出“不介意这个文本” 最好的方法是什么 这就是我所拥有的 public boolean findFileInCache(){ try (BufferedReader br = new BufferedReader(new

我正在尝试创建一个小程序,允许您在文本文件中搜索单词,然后该程序将打印出文本所在的整行

例如:

test.txt
   don't mind this text
   don't mind this either
然后,当你让程序搜索“文本”这个词时,它应该打印出“不介意这个文本”

最好的方法是什么

这就是我所拥有的

public boolean findFileInCache(){
        try (BufferedReader br = new BufferedReader(new FileReader("direct.txt"))) 
        {
            while ((name = br.readLine()) != null) 
            {
                Process p = Runtime.getRuntime().exec(name);
            }
        }
        catch (IOException e1) {    }   

        return true;
    }
用于使用方法逐行读取文件

对于每一行,使用正则表达式检查单词是否在其中,或者通过将该行拆分为
字符串[]
(使用),然后迭代结果数组中的条目以检查其中是否有所需的单词。如果有所需的单词-打印整行

如果选择第二个建议,请不要忘记使用
equals()
检查两个字符串的相等性,而不要使用
=

使用此方法逐行读取文件

对于每一行,使用正则表达式检查单词是否在其中,或者通过将该行拆分为
字符串[]
(使用),然后迭代结果数组中的条目以检查其中是否有所需的单词。如果有所需的单词-打印整行


如果您选择了第二个建议,请不要忘记使用
equals()
检查两个字符串的相等性,而不要使用
=

检查两个字符串的相等性。您需要做以下几件事:

  • 通过从一开始就阅读Java入门书籍或课程笔记来学习基础知识,确保您理解每个步骤
  • 阅读可能的类的javadoc,找到对任务有用的方法
  • 您已经找到了解决方案的两个核心部分:

    • 使用
      BufferedReader.readLine()
    • 您在
      while
      循环中执行此操作,因此一次只能处理一行
    现在,您需要了解如何处理每条线。虽然没有包含类型,
    name
    是一个字符串。最好是:

     while ((String name = br.readLine()) != null) {
          ... do something with `line`
     }
    
    如果您的代码在编译时没有
    字符串
    ,则表示您将
    名称
    声明为全局。在你知道自己在做什么之前,不要那样做

    把事情分解成方法是好的;因此,让我们现在就用一种方法“用
    行做点什么”

     while ((String name = br.readLine()) != null) {
          if(matches(line,"text")) {
               System.out.println(line);
          }
     }
    
    现在您需要编写
    匹配项()

    那么,如何编写
    matches()


    那么,首先看看
    String
    中可用的方法。它有类似于
    contains()
    split()
    的方法。其中一些方法返回其他类型,如数组。您的教材和参考资料告诉您如何查看数组。答案就在那里

    您需要做几件事:

  • 通过从一开始就阅读Java入门书籍或课程笔记来学习基础知识,确保您理解每个步骤
  • 阅读可能的类的javadoc,找到对任务有用的方法
  • 您已经找到了解决方案的两个核心部分:

    • 使用
      BufferedReader.readLine()
    • 您在
      while
      循环中执行此操作,因此一次只能处理一行
    现在,您需要了解如何处理每条线。虽然没有包含类型,
    name
    是一个字符串。最好是:

     while ((String name = br.readLine()) != null) {
          ... do something with `line`
     }
    
    如果您的代码在编译时没有
    字符串
    ,则表示您将
    名称
    声明为全局。在你知道自己在做什么之前,不要那样做

    把事情分解成方法是好的;因此,让我们现在就用一种方法“用
    行做点什么”

     while ((String name = br.readLine()) != null) {
          if(matches(line,"text")) {
               System.out.println(line);
          }
     }
    
    现在您需要编写
    匹配项()

    那么,如何编写
    matches()


    那么,首先看看
    String
    中可用的方法。它有类似于
    contains()
    split()
    的方法。其中一些方法返回其他类型,如数组。您的教材和参考资料告诉您如何查看数组。答案就在那里

    实际上,尝试它通常是编写程序的最佳方式。克里斯托弗,我知道,我实际上也在尝试。从昨天开始,我试了试,但似乎什么也做不到。到目前为止,你有什么发现?你做了什么?你有什么特别的问题吗?通常,你应该有一个具体的问题,我们可以回答。你读过文件了吗?用我得到的代码更新了帖子,它读入了文件,但我需要它只使用我搜索的单词不实际尝试的那一行。这通常是编写程序的最佳方式。克里斯托弗,我知道,实际上我也在尝试。从昨天开始,我试了试,但似乎什么也做不到。到目前为止,你有什么发现?你做了什么?你有什么特别的问题吗?通常情况下,你应该有一个具体的问题,我们可以回答。到目前为止你在文件中阅读了吗?用我得到的代码更新了帖子,它读入了文件,但我需要它只使用我搜索的单词不精确的那一行。提供所有信息,让他们把它们拼凑起来+1Indeed,我更喜欢当我可以把这些片段组合在一起的时候+1并被接受为答案。谢谢杰出的提供所有信息,让他们把它们拼凑起来+1Indeed,我更喜欢当我可以把这些片段组合在一起的时候+1并被接受为答案。谢谢