Заменить тире и пробел в одном утверждении - PullRequest
0 голосов
/ 22 июня 2019

Я хочу заменить и тире (-) и пробел на пустой символ.

Текущая строка

String number = +880 199-8017580

Желаемая строка

String number = +8801998017580

Я пробовал таким образом

String number = number.replaceAll("-|\\s",""); Но не работает.

Ответы [ 2 ]

4 голосов
/ 22 июня 2019

Ваша переменная называется number, вместо этого вы используете phoneNumber.

Чтобы сопоставить любой символ, вы также можете добавить их в класс символов [-\\s] вместо использования чередования -|\\s

* 1006.*

Обратите внимание, что вы можете опустить | в классе символов, так как он будет буквально соответствовать каналу.

См. Java-демонстрацию

1 голос
/ 22 июня 2019

Здесь мы можем захватить желаемые символы, а затем те нежелательные,

([+]?[0-9]+)|(.+?)

и сделайте простую замену.

Test

import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "([+]?[0-9]+)|(.+?)";
final String string = "+880 199-8017580\n"
     + "+880 199-801-7580\n"
     + "880  199-801-7580\n"
     + "(880)  199-801-7580\n"
     + "(880)  199-801-7580  ";
final String subst = "\\1";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
final String result = matcher.replaceAll(subst);

System.out.println(result);

Демо

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