在单个语句中替换Dash和Space

时间:2019-06-22 18:11:53

标签: java regex

我想将破折号(-)和空格都替换为一个空字符。

当前字符串

String number = +880 199-8017580

所需字符串

String number = +8801998017580

我尝试过这种方式

String number = number.replaceAll("-|\\s",""); 但不起作用。

2 个答案:

答案 0 :(得分:4)

您的变量称为数字,您使用的是phoneNumber。

要匹配任意一个字符,您也可以将它们添加到字符类[-\\s]中,而不必使用替代字符-|\\s

String number = "+880 199-8017580";
number = number.replaceAll("[-\\s]+","");
System.out.println(number); // +8801998017580

请注意,您可以从字符类中省略|,因为它实际上与管道匹配。

查看Java demo

答案 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);

Demo