Поиск и замена подстрок “[N]” и “(N)” в строке

280
13 сентября 2017, 11:52

В строке "qwerty [5] uiopp (6) asdf (1) hjkl; [3]" нужно найти и заменить все "[N]" на "RN", а "(N)" на "XN", где N- любая цифра. Через regex я что-то не осилил, из-за скобок. Нужно что-то типа [/d] искать, но скобки для него означают совсем другое.

Answer 1

Скобки как и прочие спец. знаки надо экранировать знаком экрана \.
И не забывайте, что \ экран не только в regexp, но и в строках java.
Поэтому в java для изображения одного \ надо писать два \\.

String s = "qwerty [5] uiopp (6) asdf (1) hjkl; [3]"
                 .replaceAll("\\[(\\d)\\]", "R$1")   // \[(\d)\]
                 .replaceAll("\\((\\d)\\)", "X$1");  // \((\d)\)

Круглые скобки без экрана отмечают группу символов, которую можно использовать в строке замены. Вместо $n подставляется группа номер n.

READ ALSO
Почему этот код работает, несмотря на эффект type erasure?

Почему этот код работает, несмотря на эффект type erasure?

Известно, что во время рантайма конкретный дженерик-тип неизвестен, тк

234
Java как передать название файла по сокету?

Java как передать название файла по сокету?

Приложение будет передавать множество файлов размером в 2-10 мегабайт и мне важно что бы они были с изначальным названиемДля этого нужно отправлять...

326
Загрузка аватарки в приложение

Загрузка аватарки в приложение

Как загружать аватарку в приложение, где хранить и как отображать? аватарка прилетает с сервера, через ретрофитМожно пожалуйста с нуля, по подробнее...

201
Как сгруппировать классы для модели MVC

Как сгруппировать классы для модели MVC

Программа на swing, которая предлагает пользователю загрузить n файлов excel и затем выдает итоговый отчет в виде одного excel файла

235