如何在Java中使用split方法将String句子拆分为单词?

can*_*ady -1 java regex split

我需要把一些句子分成单词。

例如:

Upper sentence.
Lower sentence. And some text.
Run Code Online (Sandbox Code Playgroud)

我这样做是:

String[] words = text.split("(\\s+|[^.]+$)");
Run Code Online (Sandbox Code Playgroud)

但是我得到的输出是:

Upper, sentence.Lower, sentence., And, some, text.
Run Code Online (Sandbox Code Playgroud)

它应该像这样:

Upper, sentence., Lower, sentence., And, some, text.
Run Code Online (Sandbox Code Playgroud)

请注意,我需要保留所有字符(。,-?!等)。

Cha*_*ika 5

在正则表达式中\W+匹配一个或多个非单词字符。

http://www.vogella.com/tutorials/JavaRegularExpressions/article.html

因此,如果您想获取句子中的单词,可以将其\W+用作分隔符。

String[] words = text.split("\\W+");
Run Code Online (Sandbox Code Playgroud)

这将为您提供以下输出。

Upper
sentence
Lower
sentence
And
some
text
Run Code Online (Sandbox Code Playgroud)

更新: 由于您已经更新了问题,如果要保留所有字符并按空格\s+分隔,请用作分隔符。

String[] words = text.split("\\s+");
Run Code Online (Sandbox Code Playgroud)

我已经检查了以下代码块,并确认它也与新行一起使用。

String text = "Upper sentence.\n" +
            "Lower sentence. And some text.";
    String[] words = text.split("\\s+");
    for (String word : words){
        System.out.println(word);
    }
Run Code Online (Sandbox Code Playgroud)