Android:替换字符串

时间:2017-07-20 19:20:15

标签: android string replaceall

在我的手机上的电话簿中,我有各种各样的联系方式:

+(353) 085 123 45 67
00661234567
0871234567
(045)123456

我将它们全部放入E.164格式,我已基本完成,但我需要解决的问题是:

除了第一个字符(如果是'+'或数字)之外,如何删除字符串中除数字以外的所有字符(包括空格)?

string phoneNumberofContact;

例如,上面的案例如下:

+3530851234567
00661234567
0871234567
045123456

2 个答案:

答案 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();
}