2014-02-22 61 views
0

我正在處理一項任務,需要我閱讀句子的文本文件。在此之後,我試圖使用指定的分隔符來限制進入的內容並將其放入數組中。Java useDelimiter問題

scannerInput.useDelimiter("\\p{Punct}|\\p{Digit}|\\p{javaWhitespace}"); 

我的問題是,當我在文本文件中讀取並把單詞放到一個數組有什麼似乎是陣列中的指標之間的空白較大的差距。

例如,陣列的輸出將如下所示:

array[0] = 
array[1] = tony 
array[2] = 
array[3] = sue 

我假設有一些格式化字符或其他我很想念我的分隔符列表。我想知道我缺少什麼刪除所有額外的空格,以便我可能只能在數組中的單詞。截至目前,我的前30個指標基本上都是空白的。

或者如果有一個簡單的方法來找出什麼是真正的背後是什麼似乎是空白。我認爲它不只是空的。謝謝你的幫助。

回答

0

你的分隔符是單個字符,也許你需要指定多個字符:

scannerInput.useDelimiter("\\p{Punct}+|\\p{Digit}+|\\p{javaWhitespace}+") 

,如果可以有多個類型各(不只是空格或之間的分隔符的數字),然後按照@David Ehrmann的建議將其更改爲正則表達式。

0

嘗試:

scannerInput.useDelimiter("[\\p{Punct}\\p{Digit}\\p{javaWhitespace}]+") 

它會吞噬連續的分隔符。我也從交替切換到一個字符類,因爲你只匹配單個字符\p{Punct}本身就是一個字符類,它們匹配的速度比交替的組快。

+0

這大多解決了我的問題。現在唯一的問題是,像史蒂文這樣的詞被分解成史蒂文和下一個詞。我將閱讀更多內容並試圖找出最佳方法。 – user3339449