Android : 替换字符串中的字符

Android : replacing characters in a string

在我手机上的电话簿中,我有各种各样的联系人,例如:

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

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

如果第一个字符是“+”或数字,我如何去除字符串中除数字以外的所有字符(包括空格)?

string phoneNumberofContact;

所以例如上面的情况看起来像:

+3530851234567
00661234567
0871234567
045123456

更新

要仅在第一个位置处理 +,您可以这样做:

boolean starsWithPlus = input.charAt(0) == '+';
String sanitized = input.replaceAll("[^0-9]", "");

if (startsWithPlus) {
    sanitized = "+" + sanitized;
}

所以基本上我是在检查它是否以加号开头,然后去掉除数字以外的所有内容,然后重新添加加号(如果有的话)。

原创

假设您只想保留 + 或数字,一个简单的正则表达式就可以了,String 提供了 replaceAll() 方法使它更容易。

String sanitized = input.replaceAll("[^+0-9]", "");

这个方法可以解决问题

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