Изменить формат вывода по regex

74
12 мая 2021, 00:40

Всем привет, еще только изучаю язык, строго не судите такой вопрос: все номера телефонов в тексте записанные в формате +375XXYYYYYYY с помощью regex заменить на +375(XX)YYY-YY-YY саму регулярку написать проблем нет, вопрос как заменить. matcher.replaceAll очевидно не работает по такому принципу

    package Regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Phone {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("[+]375(\\d{2})(\\d{3})(\\d{2})(\\d{2})");
        String str = "+12315125 +375442345295 1235 +375257621398 ";
        Matcher matcher = p.matcher(str);
        while (matcher.find()) {
    //???
            System.out.println(matcher.replaceAll([+]375\((\d{2})\)(\d{3})\-(\d{2})\-(\d{2}));
        }
    }
}
Answer 1
String s = "+375125522214 +12315125 +375442345295 1235 +375257621398";
System.out.println(s.replaceAll("\\+375(\\d{2})(\\d{3})(\\d{2})(\\d{2})","+375($1)$2-$3-$4"));

Вывод: +375(12)552-22-14 +12315125 +375(44)234-52-95 1235 +375(25)762-13-98.

Через Matcher и Pattern тоже можно:

Pattern p = Pattern.compile("[+]375(\\d{2})(\\d{3})(\\d{2})(\\d{2})");
String str = "+375125522214 +12315125 +375442345295 1235 +375257621398";
Matcher matcher = p.matcher(str);
System.out.println(matcher.replaceAll("+375($1)$2-$3-$4"));

Вывод: +375(12)552-22-14 +12315125 +375(44)234-52-95 1235 +375(25)762-13-98.

Через $1 указывается ссылка на первую группу (выражение в скобках), выражение из этой группы подставляется на место $1.

READ ALSO
корректная работа значков BottomNavigation

корректная работа значков BottomNavigation

при создании активити происходит выбор какой фрагмент отобразить на основе Extras в intent, и при выборе не первого фрагмента, а второго или третьего...

114
Indexof не распознает кириллицу

Indexof не распознает кириллицу

Есть небольшая проблема - нужно найти индекс элемента в стринговом массиве с помощью IndexOfВот кусок моего кода:

84
Проблема с созданием glFramebuffer

Проблема с созданием glFramebuffer

не могу создать буфер кадра в своем приложении для андроид на javaПожалуйста, можете сказать, что я делаю не так

119
Как правильно спроектировать класс?

Как правильно спроектировать класс?

Необходимо спроектировать класс Friend с полями:

120