как я могу привести в единый формат тел. число - PullRequest
0 голосов
/ 21 января 2020

как я могу привести в единый формат тел. число? используя только регулярное выражение

это может быть +79998887766 или 8 999 8887766 или 8-999-888-77-66 и т.д. c.

но мне нужно только +7 999 888-77- 66

public class Main {
    public static void main(String[] args) throws Exception {
        System.out.println("Input your phone number: ");
        Scanner in = new Scanner(System.in);
        String number = in.nextLine();

что дальше?

1 Ответ

0 голосов
/ 21 января 2020

Учитывая ваши три различных формата мобильных номеров, вы можете переформатировать его в общий упомянутый вами +7 999 888-77-66, сначала записав номера в пять групп чисел, используя следующее регулярное выражение:

^\D*(\d)\D*(\d{3})\D*(\d{3})\D*(\d{2})\D*(\d{2})\D*$

И затем замените его на

+$1 $2 $3-$4-$5

Чтобы восстановить номер в нужном формате.

Проверьте это демо

Java код демо,

List<String> numbers = Arrays.asList("+79998887766", "8 999 8887766", "8-999-888-77-66");
    numbers.forEach(x -> {
        System.out.println(x + " --> " + x.replaceAll("^\\D*(\\d)\\D*(\\d{3})\\D*(\\d{3})\\D*(\\d{2})\\D*(\\d{2})\\D*$", "+$1 $2 $3-$4-$5"));
    });

Выход,

+79998887766 --> +7 999 888-77-66
8 999 8887766 --> +8 999 888-77-66
8-999-888-77-66 --> +8 999 888-77-66
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...