2016-12-24 40 views
0

試圖對字符串進行規範化並將單詞存儲在字符串數組中,但與省略號(例如Lorem...ipsum)連接的單詞不能正確分割;得到的數組是[loremipsum, dolor, sit, amet]如何使用Java API分割使用省略號連接的單詞

String teststr = "Lorem...ipsum dolor sit amet."; 
String nstr = Normalizer.normalize(teststr, Normalizer.Form.NFD) 
    .toLowerCase().replaceAll("[^a-zα-ωA-ZΑ-Ω0-9 ]", ""); 
String[] words = nstr.split("\\s+"); 
System.out.println(Arrays.toString(words)); 
+3

將替換字符串更改爲「」「'''。 – 4castle

+0

@ 4castle它的工作!一直在嘗試幾個小時使其工作,對正則表達式不太熟悉,感謝您的回答。 –

+1

放下'replaceAll()'並且做'nstr.split(「[^ a-zα-ω0-9] +」)'稍微簡單一點(當你有時你不需要正則表達式中的大寫字母轉換爲小寫)。 –

回答

1

無需不止此:

String[] parts = str.split("(?iu)[^a-zα-ω0-9]+"); 

live demo

注意使用i標誌(忽略大小寫)和u標誌(Unicode,它能正確處理希臘字母的大寫字母),所以你甚至不需要Normalizer