代码之家  ›  专栏  ›  技术社区  ›  Shihab Uddin

在单个语句中替换破折号和空格

  •  0
  • Shihab Uddin  · 技术社区  · 5 年前

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

    当前字符串

    String number = +880 199-8017580
    

    所需字符串

    String number = +8801998017580
    

    我试过这样

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

    2 回复  |  直到 5 年前
        1
  •  4
  •   The fourth bird    5 年前

    您的变量名为number,您使用的是phonenumber。

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

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

    注意,您可以省略 | 从字符类,因为它将字面上匹配管道。

    见a Java demo

        2
  •  1
  •   Emma    5 年前

    在这里,我们可以捕捉到我们想要的魔法,然后是那些不想要的,

    ([+]?[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