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

使用java提取文本文件中特定单词旁边的单词

楚嘉胜
2023-03-14

我想读一个文本文件,打印出已知单词前面的单词,比如Java中的xxx。我使用Scanner类用java编写了这段代码。但是这段代码只打印了“xxx”前面的一半单词,而“xxx”前面的一些单词则丢失了。我想知道是什么问题,你能解决这个代码吗。

测试文件包含类似的内容

Blah blah blah.. man xxx create blah blah .. wander xxx blah... then xxx ..
Need to print man,wander,then etc.,
public class Searchright {
    public static void main(String[] args) throws IOException {

        Scanner s = null;
        String str;

        try {
            s = new Scanner(new BufferedReader(new FileReader("doc.txt")));
            str=s.next();
         do{
            //while (s.hasNext()) {
                 str=s.next();
                if((s.hasNext(("xxx"))||s.hasNext(("X.X.X”))))
               {
                        //System.out.println(s.next()+" "+s.next() );
                        //System.out.println(s.next());     
                        System.out.println(str);
                        //s.next();
                    }

              s.next();
            //System.out.println(s.next());

            }while(s.hasNext());
        }

        finally{
            if (s != null) {
                //s.close();
            }
        }
    }
    }

共有3个答案

章哲彦
2023-03-14

问题很简单:你调用Scanner。下一步2次循环,而不是1次:这应该有效:

public class Searchright {
    public static void main(String[] args) throws IOException {

        Scanner s = null;
        String str;

        try {
            s = new Scanner(new BufferedReader(new FileReader("doc.txt")));
            str=s.next();
         do{
            //while (s.hasNext()) {
                 str=s.next();
                if((s.hasNext(("xxx"))||s.hasNext(("X.X.X”))))
               {
                        //System.out.println(s.next()+" "+s.next() );
                        //System.out.println(s.next());     
                        System.out.println(str);
                        //s.next();
                    }

              //-> ADDED COMMENT HERE -------------------------- s.next();
            //System.out.println(s.next());

            }while(s.hasNext());
        }

        finally{
            if (s != null) {
                //s.close();
            }
        }
    }
}

我认为代码应该和问题中的代码一样。它实际上只是添加了以“开始”开头的注释//-

祁坚壁
2023-03-14

你的代码已经打印出了manwander,尽管之后丢失了。我对您的代码进行了一些更新,使用了try with resources,而不是try finally,并将下一个单词分配给自己的变量,该变量将测试所需的字符串:

public static void main(String[] args) throws IOException 
{
    try (Scanner s = new Scanner(new BufferedReader(new FileReader("doc.txt"))))
    {
        String str=s.next();
        String next;

        do
        {
            next = s.next();
            if( next.equals("xxx") || next.equals("X.X.X") )
            {
                // Need to print man,wander,then etc.,   
                System.out.println(str);
            }
            str = next;
        }
        while(s.hasNext());
    }
}

阮华美
2023-03-14
public class Searchright {
    public static void main(String[] args) throws IOException {

    Scanner s = null;
    String str;

    try {
        s = new Scanner(new BufferedReader(new FileReader("doc.txt")));
     do{
        //while (s.hasNext()) {
             str=s.next();
            if((s.hasNext(("xxx"))||s.hasNext(("X.X.X”))))
           {
                    //System.out.println(s.next()+" "+s.next() );
                    //System.out.println(s.next());     
                    System.out.println(str);
                    //s.next();
                }

        //System.out.println(s.next());

        }while(s.hasNext());
    }

    finally{
        if (s != null) {
            //s.close();
        }
    }
}
}

删除s.next()之前的do循环和之前的,而块内的do循环。它在一个循环中转义单词两次。从而造成漏字。

 类似资料:
  • 问题内容: 假设您有一个像这样的文本文件:http : //www.gutenberg.org/files/17921/17921-8.txt 有没有人有一个好的算法或开放源代码从文本文件中提取单词?如何获得所有单词,同时避免使用特殊字符,并保留诸如“ it’s”之类的内容… 我在用Java工作。谢谢 问题答案: 这听起来像是正则表达式的正确工作。如果您不知道如何开始,以下是一些Java代码,可以

  • 问题内容: 好的,所以我有这个yaml文件,我想替换一个字符串 与字符串 但是我不知道该怎么办。这是完整的Yaml文件 问题答案: 假设您使用的操作系统不错,并且您的YAML文档称为:

  • 如果案文是: 我想要一个句子(句子边界是句号,后面是空格),其中有“他”和“米兰”,即第三个句子(顺序不重要。任何同时有这两个词的句子都是必需的) 我尝试了上面的regex pattrn和其他许多方法 但是它在'milan'之后提取部分句子,或者从第一个'he'开始提取两个句子 请建议使用regex或Java中的任何其他方法完成此任务的方法 (我正致力于提取2个实体之间的关系模式:在这种情况下,关

  • 问题内容: 就像标题所说的那样,我试图编写一个程序,该程序可以从文本文件中读取单个单词并将其存储到变量中。我知道如何使用或来读取单曲,但是对于我试图这样做的行不通。一旦输入了单词,我就尝试使用.equals将它们与程序中的其他String变量进行比较,因此最好将其导入为Strings。我也可以将文本文件中的整行作为字符串输入,在这种情况下,我只需要在文件的每一行中输入一个单词即可。如何从文本文件输

  • 我想从数据帧中的文本中提取特定的单词。这些单词我已经输入到字典的列表中,它们属于某些类别(键)。由此,我想创建与存储单词的类别相对应的列。和往常一样,最好用例子来说明: 我有一个数据框: 它创建表: 还有一本我想从中提取的分类词词典。这些单词都是没有符号的自然语言单词,可以包括短语,例如本例中的“alloy wheels”(这不一定是字典,我只是觉得这是最好的方法): 根据这个,我想创建一个如下所

  • 上面的类型是一个单选按钮,其id基于下一个div标签。 <代码> 我确实知道div类中的名称(调制解调器促销 - 100)是什么。但我想点击旁边的单选按钮。我将以字符串的形式获取“调制解调器促销 - 100”的值。我想与文本进行比较,然后单击相邻的单选按钮。 请帮助我如何编写xpath或查找webElement。谢谢!