Заменить последовательность точек одним подчеркиванием - PullRequest
2 голосов
/ 18 марта 2011

У меня есть строка, содержащая любое количество точек, иногда также последовательность точек.

Я хочу заменить каждую . (точку) на _ (подчеркивание), но при наличии последовательности точек это также должно приводить только к одному подчеркиванию.

Есть идеи?

Я использую Java.

1 Ответ

10 голосов
/ 18 марта 2011

Вы можете использовать метод replaceall как:

str = str.replaceAll("\\.+","_");

См. Его на Ideone

Объяснение регулярного выражения \\.+

. - это метасимвол регулярного выражения для сопоставления с чем угодно (кроме новой строки).Поскольку мы хотим сопоставить литерал ., мы избегаем его с \.Поскольку и Java Strings, и regex engine используют \ в качестве escape-символа, нам нужно использовать \\, + - это квантификатор для одного или нескольких.

В качестве альтернативы мы можем использовать:

str = str.replaceAll("[.]+","_");

Поскольку . внутри класса символов обрабатывается буквально, нет необходимости избегать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...