Regexp изменить форму номера телефона - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь изменить формат номера телефона с помощью регулярного выражения. В следующем примере показано, каков исходный формат и как его следует изменить:

(216) 765 8765 ---> Телефон: 216-7658765

Я пыталсяиспользуя следующий код:

data = data.replaceAll("([0-9]{3})|([\\s\\./0-9])*$","$1"+"-"+"$2");

, но это не помогает.

Ответы [ 2 ]

0 голосов
/ 27 октября 2019

Не изобретай колесо, если только не хочешь. Посмотрите на эту библиотеку https://github.com/google/libphonenumber

0 голосов
/ 27 октября 2019

Ваше регулярное выражение неверно :) Вы должны получить некоторые ошибки компиляции о неудачных escape-последовательностях.

Итак, сначала ваши ошибки:

  • ваше первое совпадение для (216) было техническиправильно, но чтобы сбросить (), вы также должны соответствовать внутри: \(([0-9]{3})\)
  • ваш второй матч был полностью испорчен :) Во-первых, если вы собираетесь использовать\ s в строке, большинство языков будут думать, что вы хотите избежать "s". Так что в большинстве случаев вам нужно убежать от самого себя. так что \ s
  • Понятия не имею, что за труба |для, но вы можете просто сделать это пробел.

Рабочий пример:

data.replaceAll("\\(([0-9]{3})\\) ([\\s0-9]+)*$","$1-$2")

https://code.sololearn.com/cVRUy2BwauK8#java

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