我正在开发一个波斯语言的android应用程序,它从EditText
输入中获取一个数字。问题是,我为EditText
使用了一个自定义字体,当我试图获取它中的数字并使用Double.ValueOf
方法将它转换成双倍时,我得到了一个NumberFormatException
.When,得到了LogCat中EditText
作为字符串的值,这是带波斯语字符的数字。奇怪的是,当我在EditText
中的代码中插入一个双号时,这个问题就会发生,当用户输入它的数字时,一切都好!有解决这个问题的办法吗?有什么方法可以将带波斯语数字字符的字符串转换成双字符?谢谢你的帮助。
发布于 2016-07-27 00:07:09
您可以使用此代码将波斯数字转换为标准数字:
char[] arabicChars = {'٠','١','٢','٣','٤','٥','٦','٧','٨','٩'};
int arabic_zero_unicode= 1632;
String str = "١٣٢٤٠٤٥٣";
StringBuilder builder = new StringBuilder();
boolean charFound=false;
for(int i =0; i < str.length(); ++i ) {
charFound=false;
for(int j=0;j<arabicChars.length;j++){
if(str.charAt(i)==arabicChars[j]){
builder.append((char)((int)str.charAt(i) + 48-arabic_zero_unicode));
charFound=true;
}
if(!charFound)
builder.append(str.charAt(i));
}
}
System.out.println("Number in English : "+builder.toString());
现在你可以用
Double.ValueOf(builder.toString());
https://stackoverflow.com/questions/18279669
复制