I am trying to get character at 0 index in a string:
public static String editNoHP (String noHP){
String result;
try {
if(noHP.charAt(0) == '0')
result = "62"+noHP.substring(1);
else if(noHP.charAt(0) == '+' )
result = noHP.substring(1);
else if(noHP.charAt(0) == '6')
result = noHP;
else if(noHP.charAt(0) == '6' && noHP.charAt(1) == '2')
result = noHP;
else if(noHP.charAt(0) == '9')
result = noHP;
else
result = "62"+noHP;
}
catch (Exception e){
return "";
}
return result.replaceAll("[\\s\\-\\.\\^:,]","");
}
So I use this function after I query contact, but I found strange result.
Normal input & output:
input = +62 111-1111-1111 output : 6211111111111
input = 011111111111 output : 6211111111111
And this the strange input and result:
input = 011111111111 output : 62011111111111
So I try to debug this account and I found when app try to get character at 0 the return is '\u202A' 8234, not 0.
I already tried RegEx like:
String clean = str.replaceAll("[^\\n\\r\\t\\p{Print}]", ""); or
String clean = str.replaceAll("[^\\x20-\\x7E]", ""); or
String clean = str.replaceAll("[^\u0000-\uFFFF]", ""); or
String clean = str.replaceAll("[^\\p{ASCII}]", ""); or
String clean = str.replaceAll("[^\x00-\x7F]", ""); or
String clean = StringEscapeUtils.unescapeJava(str);
All of them return same value '\u202A' 8234.
What is this character? How to fix this problem?
Update : I try to edit the strange contact and I found strange behaviour. The number is 011111111111. First I put cursor between 0 and 1, then I press delete/backspace to remove 0. The cursor suddenly move to the right of number 1 not on the left. Then I save the contact and run my program. The result is 0, not '\u202A' 8234. So I think this because the format of number not normal, maybe when first time add this contact or when sync from the google account.
Finally, I found out that I can use regex to replace non-Alphanumeric characters.
So this is my finale function :
public static String editNoHP (String noHPinput){
String result;
try {
noHPinput = noHPinput.trim();
String noHP = noHPinput;
noHP = noHP.replaceAll("[\\s\\-\\.\\^:,]","");
noHP = noHP.replaceAll("[^A-Za-z0-9]","");
char isinya = noHP.charAt(0);
if(isinya == '0')
result = "62"+noHP.substring(1);
else if(isinya == '+' )
result = noHP.substring(1);
else
result = noHP;
}
catch (Exception e){
return "";
}
return result;
}
This regex remove all unicode characters beside Alphanumeric characters.