Java txt解析器

时间:2017-08-31 15:17:01

标签: java parsing

我正在尝试编写一个java程序,它将打开一个包含文本段落的.txt文件。然后,我想要将特定句子解析为文件。特别是“应该有陈述。例如:

Test.txt的

  

大家好。这是一个装箱单。你应该有一把牙刷。您   应该有手机充电器。而你绝对应该拥有你的   钱包。

目标输出:

  

应该有牙刷。应该有手机充电器。应该有   你的钱包。

现在我让文件选择器正常工作。现在我只是试图分解单个句子,然后我可以回过头来添加“应该有逻辑”。现在程序正在识别不同的句子,但只是不断重印完整的段落。任何帮助我走过这一点将非常感激。

import java.io.File;
import java.util.Scanner;
import javax.swing.JFileChooser;

public class PickAFile {
@SuppressWarnings("resource")
public static void main(String[] args) {
    JFileChooser chooser = new JFileChooser();

    int returnVal = chooser.showOpenDialog(null);
    if (returnVal == JFileChooser.APPROVE_OPTION) {

        try {
            System.out.println("You chose to open this file: " +      chooser.getSelectedFile().getName());

            Scanner input = new Scanner(System.in);

            File file = new File(chooser.getSelectedFile().getName());

            input = new Scanner(file);

            while (input.hasNextLine()) {
                String message = input.nextLine();
                String[] sentences = message.split("(?<=[.!?])\\s* ");
                for (String s : sentences) {
                    System.out.println(message);
                }
            }

            input.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
}  

输出:

  

您选择打开此文件:test.txt Hello all。这是一个包装   名单。你应该有一把牙刷。你应该有一个手机充电器。   你肯定应该有你的钱包。

     

大家好。这是一个装箱单。你应该有一把牙刷。您   应该有手机充电器。而你绝对应该拥有你的   钱包。

     

大家好。这是一个装箱单。你应该有一把牙刷。您   应该有手机充电器。而你绝对应该拥有你的   钱包。

     

大家好。这是一个装箱单。你应该有一把牙刷。您   应该有手机充电器。而你绝对应该拥有你的   钱包。

     

大家好。这是一个装箱单。你应该有一把牙刷。您   应该有手机充电器。而你绝对应该拥有你的   钱包。

1 个答案:

答案 0 :(得分:1)

        while (input.hasNextLine()) {
            String message = input.nextLine();
            String[] sentences = message.split("(?<=[.!?])\\s* ");
            List<String> shouldHaves = new ArrayList<String>();
                for (String s : sentences) {
                  if (s.contains("should have"))
                    shouldHaves.add(s);
                }
                for (String s : shouldHaves) {
                  System.out.println(s);
                }
        }