| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > регулярные выражения |
| Автор: redwhite90 29.11.2012, 13:40 | ||
почему при попытке распарсить строку с целю получения все пунктуационных знаков таким образом:
всё хорошо работает Если на первом месте стоит пунктуационный знак, а если нет, то первый элемент массива all становится пустой строй |
| Автор: LSD 29.11.2012, 14:15 | ||
Т.е. изначальная позиция в строке 0, ищется первое вхождение шаблона. Если первый знак не пунктуация, то он начинается с 0. Значит первая строка получается от 0 до 0. |
| Автор: LSD 29.11.2012, 15:14 | ||
Видно, что если find() найдет регион который начинается с 0 символа, то input.subSequence(index, m.start()) даст пустую строку. В чем проблема написать код, который будет удалять пустую строку вначале (если есть)? |
| Автор: redwhite90 29.11.2012, 15:16 |
| Согласен, но думается, что это возможно как то сделать через регулярное положение? |
| Автор: LSD 29.11.2012, 16:51 | ||
И что должно быть в первом элементе? |
| Автор: redwhite90 29.11.2012, 21:14 |
| первый элемент - первый знак препинания, встреченный в строке |
| Автор: Kircul 30.11.2012, 10:59 | ||
Не проверял, но должно быть как-то так:
|
| Автор: Pawl 30.11.2012, 11:41 | ||
Я хотел предложить еще такой вариант:
Но вариант Kircul мне понравился больше |
| Автор: LSD 30.11.2012, 11:48 | ||
Вопрос что должно быть с точки зрения контакта метода split(), а не твоей задачи. |
| Автор: baldina 30.11.2012, 12:10 |
| split здесь просто не подходит, т.к. предназначен для другого. Добавлено @ 12:12 но её можно приспособить: в начало строки добавить знак пунктуации и пробел, а результирующий массив обрабатывать начиная с 1 |
| Автор: LSD 30.11.2012, 12:22 | ||
Знак препинания должен быть с пробелом или еще каким из \w\s символом. Хотя это все равно, чесать левой ухо правой ногой. |
| Автор: baldina 30.11.2012, 12:26 |
| верно, буковку надо. ну так split() для этой задачи - оно и есть. тут либо как понятней - match и все такое, либо покороче - split с извращениями (алгоритмисты бы сказали - с преобразованием экземпляра задачи |
| Автор: LSD 30.11.2012, 12:28 |
Есть подозрение, что ТС не устроит ".:;-" одной строкой и захочется получить их по одному. |
| Автор: baldina 30.11.2012, 13:08 |
| для этого есть нормальное решение от Kircul, хоть и более длинное |
| Автор: redwhite90 2.12.2012, 00:57 |
| Всем спасибо) |