Есть задание, вырезать предложения из текста. Я использовал метод
.split() и указал символы границы разбивки "\\.|\\...|\\?|\\!", но столкнулся с тем, что символ окончания предложения не захватывается. Как указать границу, включая знак окончания предложения?
Хочу Предложение! Получаю Предложение
Не встречал такого метода. Немного топорно, но можно добавить какой-то спец.символ после каждого завершения предложения, а потом по этому спецсимволу разбить:
String str = new String();
List<String> regExprs = new ArrayList<>();
regExprs.add("\\.{3}");
regExprs.add("\\.{1} ");
regExprs.add("\\!");
regExprs.add("\\?");
for (String s :regExprs) {
str = str.replaceAll(s, s + "^");
}
String[] result = str.split("\\^");
В классе String есть метод String[] split(String regex, int limit), второй параметр которого означает максимальное количество элементов в итоговом массиве. При отрицательном значении limit (например -1) последний разделитель также захватывается.
Вообще-то этот метод и с более привычным одним параметром String[] split(String regex) все равно вызывает метод String[] split(String regex, int limit), только там limit = 0, т.е. работает без захвата последнего разделителя.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей