Как разбить строку на слова и разделительные знаки?

153
28 марта 2018, 04:44

Требуется чтобы массив содержал слова и знаки предложения на одном уровне, вроде:

"Hello, World!"
["Hello", ",", "World", "!"]

Пропуски, табуляция в результирующем массиве не имеют значения. Каждый знак считать как один символ: "..." -> [".",".","."]

Answer 1

Хмю Тут много вариантов.

Самы короткий, это одним 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();

Не самый оптимальный вариант за-за использования промежуточного списка, но цель была не в этом )

READ ALSO
Считывание данных из командной строки

Считывание данных из командной строки

Я написал программу при помощи Java, в которой есть главное окно для набора текста, окно для вывода сообщений и ошибок, а так же кнопка запуститьСвоеобразная...

162
jquery-Knob library

jquery-Knob library

Добрый день всемПытаюсь подключить библиотеку jquery-knob, устанавливал через npm install jquery-knob, в package-json она есть"jquery-knob": "^1

146
ajax - обработка возвращаемых данных

ajax - обработка возвращаемых данных

Вопрос следующий: как получить значение data, которое передает php сервер js скрипту в текстовом формате (что бы потом сделать проверку, например...

201
Как убрать из диапазона чисел лишние на jQuery?

Как убрать из диапазона чисел лишние на jQuery?

Подскажите пожалуйста каким образом можно из диапазона чисел в input="number" убрать лишние числа? Нужно чтобы остались числа 3,4,5,6,7,8,9,10,11,12,18,20,24Вроде...

202