我想寫一個java程序,將打開一個.txt文件,其中將包含文本段落。然後我想解析出一個文件的特定句子。特別是「應該有語句,例如:。Java的txt解析器
Test.txt的
大家好這裏是AA裝箱清單你應該有一個牙刷你 應該有一個手機充電器,你絕對應該有。您 錢包
目標輸出:。
應該有一個牙刷應該有一個手機充電器噓應該有 你的錢包。
現在我有文件選擇器正常工作。現在我只是試圖分解單個句子,然後我可以回過頭來添加「應該有邏輯」。現在程序正在識別不同的句子,但只是不斷重印整個段落。任何幫助通過這個步行我會非常感激。
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的大家都好。這裏是一個包裝 列表。你應該有牙刷。你應該有一個手機充電器。 你絕對應該有你的錢包。
大家好。這是一個裝箱單。你應該有牙刷。你的手機充電器應該有 。而你絕對應該有你的錢包 。
大家好。這是一個裝箱單。你應該有牙刷。你的手機充電器應該有 。而你絕對應該有你的錢包 。
大家好。這是一個裝箱單。你應該有牙刷。你的手機充電器應該有 。而你絕對應該有你的錢包 。
大家好。這是一個裝箱單。你應該有牙刷。你的手機充電器應該有 。而你絕對應該有你的錢包 。
在for循環中,你的意思是說的System.out.println(S); ?? –
是的,卡爾。非常感謝!幫助我前進。現在正在分析單個句子。 – NotTheDroids
幾個指針:1)'Scanner'及其next()方法將有助於迭代單詞。在迭代它們時,你可以記住最後兩個單詞,並且當它們是「應該」和「有」時,將它們與當前單詞一起顯示; 2)正則表達式:它可以搜索「應該有」的模式; 3)NLP:如果你真的想要一些可以處理邊緣情況的東西,比如「絕對」的話,你需要自然語言處理。有些圖書館正在處理這個問題,但即使如此,這也將是一個比前兩個更爲複雜的解決方案。 –
Aaron