【问题标题】:Remove parentheses, dashes, and spaces from phone number从电话号码中删除括号、破折号和空格
【发布时间】:2022-02-21 15:06:25
【问题描述】:

我有一个电话号码,例如 (123) 456-7890。我正在使用replaceAll 方法从字符串中删除()- 和空格。我试过了

String phNo= "(123) 456-7890".replaceAll("[()-\\s]").trim();

但它不起作用。有什么解决办法吗?

【问题讨论】:

  • 向我们展示您的代码和输出。
  • “不工作”是什么意思? (无论如何,问题是- 在字符类中有意义,使用"[-()\\s]"

标签: java regex


【解决方案1】:

这应该可行:

String phNo = "(123) 456-7890".replaceAll("[()\\s-]+", "");

在你的正则表达式中:

  • \s 应该是 \\s
  • 连字符应该在字符类的第一个或最后一个以避免转义或将其用作\\-
  • 使用量词 +[()\\s-]+ 一样,通过最小化替换次数来提高效率

【讨论】:

    【解决方案2】:

    如果您想要电话号码,请使用:

    String phNo = "(123) 456-7890".replaceAll("\\D+", "");
    

    此正则表达式将标记所有非数字字符,并将其替换为空字符串。


    正则表达式:\D+

    • 匹配单个非数字字符。 \D
      • 在一次和无限次之间,尽可能多次。 +

    【讨论】:

    • 这不适用于包含加号的电话号码,即使用 + 作为国际电话前缀的电话号码。
    【解决方案3】:
      String newStr = phoneNumber.replaceAll("[^0-9]", "");
            System.out.println(newStr);
    

    删除所有非数字字符。

    Java Regex - Tutorial

    【讨论】:

      【解决方案4】:

      带有括号[]- 字符表示一个字符范围,例如[a-z]。但是,字符范围在您希望使用文字 - 的地方不起作用。躲开它。

      String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "").trim());
      

      【讨论】:

        【解决方案5】:

        这没有按预期工作的主要原因有两个。

        1. 在字符类中,连字符具有特殊含义。您可以将连字符作为类的第一个或最后一个字符。在某些正则表达式实现中,您还可以直接放在范围之后。如果您将连字符放在其他任何地方,您需要对其进行转义才能将其添加到您的类中。

          String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]").trim();
                                                        ^^
          
        2. 您没有提供任何答案都没有向您指出的替换值。

          String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "").trim();
                                                                  ^^
          

          最后,您也可以在此处删除.trim()

          String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "");
          

        【讨论】:

          【解决方案6】:

          如果你使用的是 Kotlin,那么

          mobileNo.replace(Regex("[()\\-\\s]"), "")

          【讨论】:

            【解决方案7】:

            在 2022 年使用这个!所有其他答案都太旧了!!!!!!!!!!!!

            result = "(123) 456-7890".replace(/[^+\d]+/g, "");
            

            【讨论】:

              猜你喜欢
              • 2022-09-22
              • 2011-02-12
              • 1970-01-01
              • 1970-01-01
              • 2018-05-07
              • 2020-08-04
              • 1970-01-01
              • 2020-10-07
              • 1970-01-01
              相关资源
              最近更新 更多