【问题标题】:Remove all special characters from a phone number string entry except + occurring only at first place [closed]从电话号码字符串条目中删除所有特殊字符,除了 + 仅出现在第一位 [关闭]
【发布时间】:2013-06-20 13:44:19
【问题描述】:

我想从电话号码字符串条目中删除除 + 符号之外的所有特殊字符。如果它只发生在第一个地方,那也是如此。 示例:+911234567890 应该有效,但 +91+1234#1234 应该无效。

【问题讨论】:

  • 你什么都没试过
  • 请提供你的代码。

标签: java android regex string replace


【解决方案1】:

这是给你的答案。但请尝试一下,然后提出问题,这样你就可以提高自己。至少尝试一下不直接使用代码来理解它

public static boolean isValid(String number) {

        if(number.startsWith("+")){
            number=number.substring(1);
        }
        try {
             Integer.parseInt(number);
        } catch (Exception e) {
            return false;
        }
        return true;
    }

【讨论】:

  • 嘿,我同意我没有发布代码,但这并不意味着我没有尝试过任何东西。另外,我要求替换字符,而不是通过捕获异常来找到它。谢谢你的建议:)
【解决方案2】:

你可以使用类似的东西:

String number = "+91+1234#1234"
number=number.replaceAll("[\\D]", "")

这会将所有非数字字符替换为空格,但是对于开头的附加“+”,您可能需要将其作为前缀添加到结果中。

希望这会有所帮助!

【讨论】:

    【解决方案3】:
    Scanner scan=new Scanner(System.in);
            String input=scan.next();
            String onlyDigits = input.replaceAll("[^0-9]+","");
            System.out.println(onlyDigits);
    

    【讨论】:

      【解决方案4】:

      试试这个

      public static void main(String arg[]){
      
      String num="+45*#545454*j";
      String edited="";
      
      for (int i=0;i<num.length();i++){
      
      char c=num.charAt(i);
          if (i==0&&c=='+'){
              edited+=c;
          }
          else if (Character.isDigit(c)){
              edited+=c;
          }
      
      }
      System.out.println(edited);
      }
      }
      

      【讨论】:

        【解决方案5】:

        使用MaskFormatter 来限制输入,类似这样

            MaskFormatter formatter = null;
            try {
                formatter = new MaskFormatter("+###");
            } catch (ParseException e) {
                e.printStackTrace();
            }
            JFormattedTextField tf = new JFormattedTextField(formatter);
        

        构造函数中的字符串“+###”定义了可以在文本字段中输入的内容;在这种情况下,第一个字符需要是“+”,后面三个需要是数字。详情请见API

        【讨论】:

          【解决方案6】:

          最好的方法是使用正则表达式:

          import java.util.regex.Matcher;
          import java.util.regex.Pattern;
          
          public class Main
          {
              public static void main(String[] args)
              {
              String sPhoneNumber = "+911234567890";
          
              Pattern pattern = Pattern.compile("^[+]\\d*");
              Matcher matcher = pattern.matcher(sPhoneNumber);
          
              if (matcher.matches()) {
                  System.out.println("Phone Number Valid");
              } else {
                  System.out.println("Phone Number must start from  + ");
              }
           }
          }
          

          【讨论】:

          • 是的,我试过这个匹配器,我能够检测到字符串有符号,但我无法替换它们。
          猜你喜欢
          • 1970-01-01
          • 2014-03-26
          • 1970-01-01
          • 1970-01-01
          • 2014-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-08
          相关资源
          最近更新 更多