2016-12-24 3 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フラグ(正しくギリシャ文字の大文字と小文字を扱うユニコード、)を使用するので、あなたもNormalizerを必要としません。

関連する問題