将字符串分成 java 中的句子(在指定组的符号出现后)

Breaking string into sentences in java (after symbol of specified group occurs)

所以我写了下面的代码:

String text = "This is a string.        I want to break it into sentences";
String[] sentences = text.split("\."); 

for (int i = 0; i < sentences.length; i++)
    System.out.println(sentences[i]);

这段代码的输出是:

This is a string
        I want to break it into sentences

如何更改此代码以便

  1. 每个新句子不仅会在“.”之后创建,还会在“!”之后创建。或“?”。
  2. 句首不会有空格。

例如,如果我们有以下字符串

String text = "This is a string!   Is this a string?         I want to break it into sentences";

那么输出应该是:

This is a string
Is this a string
I want to break it into sentences

您可以使用字符 class 围绕点 (.)、?! 字符之一进行拆分。要删除句子开头(也可能是结尾)的 space,您可以简单地 trim 结果字符串:

String[] sentences = text.split("[.!?]");

for (int i = 0; i < sentences.length; i++) {
    System.out.println(sentences[i].trim());
}

将定界符放在字符 class 内,并在字符 class 旁边添加 \s* ,这样它也将占用以下零个或多个空格。

String[] sentences = text.split("[?!.]\s*"); 

示例:

String text = "This is a string!   Is this a string?         I want to break it into sentences";
String[] parts = text.split("[?!.]\s*"); 
for(String i: parts)
{
System.out.println(i);
}

输出:

This is a string
Is this a string
I want to break it into sentences