我正在使用波斯语言开发一个Android应用程序,它从EditText
输入获取一个数字。
问题是我正在为EditText
使用自定义字体,当我尝试获取其中的数字并使用Double.ValueOf
方法将其转换为double时,我得到NumberFormatException
。当我在LogCat中将EditText
的值作为字符串获取时,它是具有波斯语字符的数字。
一个奇怪的事情是当我在EditText
代码中插入一个双号时出现这个问题,当用户输入它的号码时,一切正常!
解决这个问题的任何想法?
有没有办法将波斯语数字字符串转换为双倍?
谢谢你的帮助。
答案 0 :(得分:1)
您可以使用此代码将波斯语数字转换为标准数字:
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());