我想从电话号码字符串条目中删除除 + 符号之外的所有特殊字符。如果它只发生在第一个地方,那也是如此。示例:+911234567890 应该是有效的,但 +91+1234#1234 应该是无效的。
问问题
18816 次
6 回答
28
你可以使用类似的东西:
String number = "+91+1234#1234"
number=number.replaceAll("[\\D]", "")
这将用空格替换所有非数字字符,但是对于开头的附加“+”,您可能需要将其作为前缀添加到结果中。
希望这可以帮助!
于 2013-06-24T06:12:51.387 回答
3
最好的方法是使用正则表达式:
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 + ");
}
}
}
于 2013-06-24T06:40:29.367 回答
2
Scanner scan=new Scanner(System.in);
String input=scan.next();
String onlyDigits = input.replaceAll("[^0-9]+","");
System.out.println(onlyDigits);
于 2013-06-24T06:24:59.097 回答
1
尝试这个
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);
}
}
于 2013-06-24T06:26:30.547 回答
0
使用MaskFormatter来约束输入,像这样
MaskFormatter formatter = null;
try {
formatter = new MaskFormatter("+###");
} catch (ParseException e) {
e.printStackTrace();
}
JFormattedTextField tf = new JFormattedTextField(formatter);
构造函数中的字符串“+###”定义了可以在文本字段中输入的内容;在这种情况下,第一个字符需要是“+”,后面三个需要是数字。有关详细信息,请参阅API。
于 2013-06-24T06:36:51.943 回答
0
这是给您的答案。但是请尝试一下,然后提出问题,以便您提高自己。至少尝试理解代码而不直接使用它
public static boolean isValid(String number) {
if(number.startsWith("+")){
number=number.substring(1);
}
try {
Integer.parseInt(number);
} catch (Exception e) {
return false;
}
return true;
}
于 2013-06-24T06:12:44.370 回答