Требуется чтобы массив содержал слова и знаки предложения на одном уровне, вроде:
"Hello, World!"
["Hello", ",", "World", "!"]
Пропуски, табуляция в результирующем массиве не имеют значения.
Каждый знак считать как один символ: "..." -> [".",".","."]
Хмю Тут много вариантов.
Самы короткий, это одним Regex'ом. Фишка в том, что при сплите, символы съдеаютя. Чтобы этого избежать, можно использовать look ahead.
"Hello, World!".split("((?=,|\\.|!)|\\s)");
Правда есть проблема, если строка начинает с символа, например ",Hello", то первый символ уже не будет распознан.
Второй вариант чуть подлинее, вам его уже в комментариях подсказали, только не через split, а просто через find. Нужно будет использвовать Pattern, Matcher, в общем почитайте как регулярке в Java работают )
Matcher matcher = Pattern.compile("\\w+|,|\\.|!").matcher("Hello, world!");
List<String> results = new ArrayList<>();
while(matcher.find()) {
results.add(matcher.group());
}
restults.toArray();
Не самый оптимальный вариант за-за использования промежуточного списка, но цель была не в этом )
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости