我正在尝试编写一个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。这是一个包装 名单。你应该有一把牙刷。你应该有一个手机充电器。 你肯定应该有你的钱包。
大家好。这是一个装箱单。你应该有一把牙刷。您 应该有手机充电器。而你绝对应该拥有你的 钱包。
大家好。这是一个装箱单。你应该有一把牙刷。您 应该有手机充电器。而你绝对应该拥有你的 钱包。
大家好。这是一个装箱单。你应该有一把牙刷。您 应该有手机充电器。而你绝对应该拥有你的 钱包。
大家好。这是一个装箱单。你应该有一把牙刷。您 应该有手机充电器。而你绝对应该拥有你的 钱包。
答案 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);
}
}