2013-08-16 61 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());