Android:替换字符串中的字符
在我手机上的电话簿中,我有各种联系人,如:Android:替换字符串中的字符,android,string,replaceall,Android,String,Replaceall,在我手机上的电话簿中,我有各种联系人,如: +(353) 085 123 45 67 00661234567 0871234567 (045)123456 我正在将它们全部转换为E.164格式,我已经基本完成了,但我需要解决的问题是: 除了第一个字符(如果它是“+”或数字)之外,如何剥离字符串中除数字以外的所有字符(包括空格) string phoneNumberofContact; 例如,上面的例子如下所示: +3530851234567 00661234567 0871234567 04
+(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]", "");
更新
要仅在第一个位置处理+
,可以执行以下操作:
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();
}
公共字符串cleanPhoneDigits(字符串phonenum){
StringBuilder=新的StringBuilder();
if(phonenum.charAt(0).equals('+')){
builder.append('+');
}
对于(int i=1;i
这种方法可以达到目的
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();
}
公共字符串cleanPhoneDigits(字符串phonenum){
StringBuilder=新的StringBuilder();
if(phonenum.charAt(0).equals('+')){
builder.append('+');
}
对于(int i=1;i
但是如何处理第一个字符呢?除了字符串的开头,你还有+
字符吗?可能是。+是数字键盘上的一个符号。@CHarris我更新了我的答案来处理这个问题。如果你需要处理保留+的问题,如果不是第一个字符,而是第一个字符是+或数字,你可以可以先运行我原来的清理正则表达式,然后运行我更新的代码。但是如何处理第一个字符呢?除了字符串的开头之外,您还有+
字符吗?可能是。+是数字键盘上的一个符号。@CHarris我更新了我的答案来处理这种情况。如果需要处理,请保留+如果不是第一个字符Racker,但如果它是第一个+或数字字符,则可以先运行我的原始Sanitation regex,然后运行我的更新代码。