Для этого не нужно использовать специальный анализатор, если у вас уже есть метод String.split(). Вам просто нужно использовать правильное Регулярное выражение (RegEx) для выполнения задачи.
Предложения внутри абзаца могут содержать не только точку в конце. В конце предложения может быть вопросительный знак (?) или, возможно, восклицательный знак (!) Чтобы по-настоящему вытащить все предложения из абзаца, вам нужно будет это учитывать. Еще одна вещь, которую следует учитывать: что, если есть числовое значение, которое соответствует определенной десятичной точке в предложении, например:
«Эй, ребята, послушайте это. Стоимость предмета составляла 123,45 доллара, и угадайте, что она заплатила все это одним махом! Этот www.ebay.com — действительно отличное место, где можно купить вещи, не правда ли? Однако я останусь на сайте www.amazon.com. Я не подсел на него, но они хорошо относились ко мне в течение многих лет».
Теперь, взглянув на небольшой абзац выше, вы можете ясно увидеть в нем некоторые вещи, которые необходимо учитывать при разбиении его на отдельные предложения. Мы не можем просто основывать все на точке (.). Мы действительно не хотим разделять денежные значения и веб-домены, и мы не хотим, чтобы вопросительные или восклицательные предложения включались в другие предложения.
Чтобы разбить этот абзац примера на отдельные предложения, не повреждая содержимое с помощью метода String.split(), мы можем использовать это регулярное выражение:
String[] sentences = paragraph.trim().split("(?<=\\.\\s)|(?<=[?!]\\s)");
Вы заметили, что здесь мы также использовали метод String.trim()? Некоторые абзацы могут начинаться с табуляции или пробелов, поэтому мы просто избавляемся от них с самого начала, прежде чем будет выполнено разделение (на всякий случай). Используемое Регулярное выражение (которое использует Positive Look-Behind) в String Метод .split() на самом деле не так уж и сложен, и вы можете протестировать его здесь. Вот о чем речь:
![введите здесь описание изображения](https://i.stack.imgur.com/3zeUI.png)
Если бы вы теперь перебирали переменную массива строк с именем sentences следующим образом:
for (String sentence : sentences) {
System.out.println(sentence + " \n");
}
вывод вашей консоли должен выглядеть примерно так:
Hey folks, listen to this.
The value of the item was $123.45 and guess what, she paid all in one shot!
That www.ebay.com is a real great place to get stuff don't you think?
I think I'll stick with www.amazon.com though.
I'm not hooked on it but they've treated me great for years.
09.09.2017