2017-03-08 35 views
1

我想將隨機file.txt分成String[]。文本來自Gutenberg.org並且有很多新的行。正則表達式和新行

例子:

林肯信件的古騰堡計劃電子書,由亞伯拉罕·林肯

本電子書是利用任何人的任何地方,在沒有成本和 幾乎沒有任何限制。您可以複製它,把它送人或 重新使用它下的古騰堡項目許可的範圍包括 本電子書或在線www.gutenberg.org

標題:林肯信件

的輸出對於每個單詞都是正確的,但對於結束段落和開始段落的單詞不是。

例如,「Lincoln」和「This」組合的「Lincolnhis」被視爲一個單詞。相反,我想擁有「林肯」和「這個」。

token = word.split("\\s|\\.|\\,");這是我用來分割文本文件的正則表達式。請幫忙。

這裏是我使用的輸入文本文件中的代碼:

FileReader fr = new FileReader("C:\\Users\\Petr Holoubek\\Desktop\\hello world.txt"); 
    BufferedReader br = new BufferedReader(fr); 

    String[] tokens; 
    String temp; 
    int i; 

    i = 0; 
    temp = ""; 
    while((i=br.read()) != -1) { 
     temp = temp + br.readLine(); 
    } 

這裏是實際的分詞:

public String[] tokenize(String word){ 
//divides the input by non-char symbol and 
//puts tokens into state hashmap as keys 
    String[] token; 

    token = word.split("\\s|\\.|\\,"); 
    return token; 
} 

非常感謝您的幫助!

+0

我們展示你的代碼。如果Sean F是對的,並且你正在使用'BufferedReader#readLine',那就很好;該方法爲您處理結束行處理並將文本集合到一個String中。一個真正的努力和錯誤保護程序。如果您尚未使用它,請使用它。但它不會做任何事情。你必須在每行的末尾插入一個空格,除了你不應該寫的行之外。魔鬼然後將在細節。不要使用低級'read'。善待自己!爲了好,請告訴我們你的代碼。 –

回答

0

您可能正在讀取帶有BufferedReader.readLine的文件,該文件會丟棄將下一行分隔開的換行符,然後將這些字符串連接起來,這些字符串將每行的結尾粘貼到下一行的開頭。

你可能做這樣的事情:

String str = ""; 
while(true) { 
    String next = bufferedReader.readline(); 
    if(next == null) break; 
    str += next; 
} 

不要使用輸入行,使用read(的char [] CBUF,整數關,INT len)將