从电话号码字符串条目中删除所有特殊字符,除了 + 仅出现在第一位 [关闭]

Posted

技术标签:

【中文标题】从电话号码字符串条目中删除所有特殊字符,除了 + 仅出现在第一位 [关闭]【英文标题】: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 应该无效。

【问题讨论】:

你什么都没试过 请提供你的代码。 【参考方案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  + ");
    
 

【讨论】:

是的,我试过这个匹配器,我能够检测到字符串有符号,但我无法替换它们。

以上是关于从电话号码字符串条目中删除所有特殊字符,除了 + 仅出现在第一位 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Apex - 从字符串中删除除“+”之外的特殊字符

SQL:从 SELECT 语句返回的所有条目中删除部分字符串

从R中的字符串中删除所有特殊字符?

从JS中的字符串中删除所有特殊字符

使用 spark 从 csv 文件中删除所有特殊字符

从bash中的字符串中删除所有特殊字符和大小写