我想将破折号(-)和空格都替换为一个空字符。
当前字符串
String number = +880 199-8017580
所需字符串
String number = +8801998017580
我尝试过这种方式
String number = number.replaceAll("-|\\s","");
但不起作用。
答案 0 :(得分:4)
您的变量称为数字,您使用的是phoneNumber。
要匹配任意一个字符,您也可以将它们添加到字符类[-\\s]
中,而不必使用替代字符-|\\s
String number = "+880 199-8017580";
number = number.replaceAll("[-\\s]+","");
System.out.println(number); // +8801998017580
请注意,您可以从字符类中省略|
,因为它实际上与管道匹配。
答案 1 :(得分:1)
在这里,我们可以捕获我们想要的字符,然后捕获那些不需要的字符,
([+]?[0-9]+)|(.+?)
并进行简单的替换。
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);