2013-08-16 22 views
1

我正在研究一种波斯语言的Android应用程序,该应用程序从EditText输入中获取一个数字。 问题是我使用EditText的自定义字体,当我尝试获取其中的数字并使用Double.ValueOf方法将其转换为double时,我得到一个NumberFormatException。当我将EditText的值作为字符串在LogCat中,它是带有波斯语字符的数字。 奇怪的是,当我在EditText中的代码中插入一个双数时,会发生此问题,并且当用户将其数字编号时,所有内容均为OK! 解决此问题的任何想法? 有什么办法可以将波斯语数字字符转换为双倍字符串? 谢谢你的帮助。在一个EditText中将unicode farsi数字字符转换为android

回答

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