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

时间:2017-11-23 11:41:25

标签: java regex split

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

例如:

Upper sentence.
Lower sentence. And some text.

我是这样做的:

String[] words = text.split("(\\s+|[^.]+$)");

但我得到的输出是:

Upper, sentence.Lower, sentence., And, some, text.

应该是这样的:

Upper, sentence., Lower, sentence., And, some, text.

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

5 个答案:

答案 0 :(得分:4)

正则表达式\W+中的

匹配一个或多个非单词字符。

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

因此,如果您想获得句子中的单词,可以使用\W+作为分割器。

String[] words = text.split("\\W+");

这将为您提供以下输出。

Upper
sentence
Lower
sentence
And
some
text

更新: 由于您已更新了问题,因此如果要保留所有字符并按空格分割,请使用\s+作为拆分器。

String[] words = text.split("\\s+");

我检查了以下代码块,并确认它也在使用新行。

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

答案 1 :(得分:1)

表达式\\s+表示“1个或多个空白字符”。我认为您需要做的是用\\s*替换它,这意味着“零个或多个空白字符”。

答案 2 :(得分:1)

您可以使用以下代码行将字符串拆分为子字符串:

String[] result = speech.split("\\s");

供参考:https://alvinalexander.com/java/edu/pj/pj010006

答案 3 :(得分:1)

替换点,逗号等...用于空格并将其拆分为空格

String text = "hello.world this   is.a sentence.";
String[] list = text.replaceAll("\\.", " " ).split("\\s+");
System.out.println(new ArrayList<>(Arrays.asList(list)));

结果:[hello, world, this, is, a, sentence]

编辑:

如果只是针对点,这个技巧应该有用......

String text = "hello.world this   is.a sentence.";
String[] list = text.replaceAll("\\.", ". " ).split("\\s+");
System.out.println(new ArrayList<>(Arrays.asList(list)));
  

[你好。,世界,这,是。,a,句子。]

答案 4 :(得分:1)

更新问题的简单答案

    String text = "Upper sentence.\n"+
            "Lower sentence. And some text.";

[只是空格]一个或多个OR新行一个或多个

    String[] arr1 = text.split("[ ]+|\n+");
    System.out.println(Arrays.toString(arr1));

结果:

 [Upper, sentence., Lower, sentence., And, some, text.]