Как использовать разделитель, чтобы исключить круглые скобки?

Скажем, у меня есть эта строка: "(привет) (мир)"

Как мне использовать метод .useDelimiter() для получения вывода, который печатает hello и world в отдельных строках?

Я видел кучу примеров шаблонов разделителей, и все они, похоже, используют странный синтаксис внутри параметров useDelimiter.


person btrballin    schedule 26.03.2015    source источник


Ответы (3)


Этот «странный синтаксис» называется регулярным выражением, вы можете найти синтаксис в javadoc класса Pattern.

Разделителем по умолчанию является \p{javaWhitespace}+, что означает еще один "пробельный пробел Java" (см. предыдущий javadoc).

В вашем случае вы можете изменить его на [\p{javaWhitespace}()]+, так как у вас тоже есть пробелы.

Также не забудьте избежать \p

s.useDelimiter("[\\p{javaWhitespace}()]+");
person REMqb    schedule 26.03.2015
comment
Привет, спасибо за ответ. Кажется, я нашел шаблон, который хотел игнорировать все знаки препинания: \p{Punct}, но я не уверен, что напишу шаблон, чтобы включить это и пробелы вместе. - person btrballin; 28.03.2015
comment
Просто поместите его в [] с пробелом вроде [\\p{Punct} ]+. - person REMqb; 31.03.2015

Попробуйте этот разделитель:

 "\\(|\\)"
person Sachin Gupta    schedule 26.03.2015

useDelimiter() принимает регулярное выражение в качестве аргумента, вы можете ознакомиться с учебным пособием Oracle по регулярным выражениям здесь: https://docs.oracle.com/javase/tutorial/essential/regex/

В вашем конкретном случае разделитель [\\(\\)] должен работать.

person Petter    schedule 26.03.2015