在我的手机上的电话簿中,我有各种各样的联系方式:
+(353) 085 123 45 67
00661234567
0871234567
(045)123456
我将它们全部放入E.164格式,我已基本完成,但我需要解决的问题是:
除了第一个字符(如果是'+'或数字)之外,如何删除字符串中除数字以外的所有字符(包括空格)?
string phoneNumberofContact;
例如,上面的案例如下:
+3530851234567
00661234567
0871234567
045123456
答案 0 :(得分:2)
要仅在第一个位置处理+
,您可以执行以下操作:
boolean starsWithPlus = input.charAt(0) == '+';
String sanitized = input.replaceAll("[^0-9]", "");
if (startsWithPlus) {
sanitized = "+" + sanitized;
}
所以基本上我要检查它是否以加号开头,然后剥去除数字之外的所有内容,然后重新添加加号(如果它在那里)。
假设您只想保留+
或数字,一个简单的正则表达式将起作用,String
提供replaceAll()
方法,使其更容易。
String sanitized = input.replaceAll("[^+0-9]", "");
答案 1 :(得分:1)
这种方法可以解决问题
public String cleanPhoneDigits(String phonenum) {
StringBuilder builder = new StringBuilder();
if (phonenum.charAt(0).equals('+') {
builder.append('+');
}
for (int i = 1; i < phonenum.length(); i++) {
char c = phonenum.charAt(i);
if (Character.isDigit(c)) {
builder.append(c);
}
}
return builder.toString();
}