1

我正在开发一个波斯语的 android 应用程序,它从EditText输入中获取一个数字。问题是我正在使用自定义字体,EditText当我尝试获取其中的数字并使用Double.ValueOf方法将其转换为双NumberFormatException精度时,我得到了一个。当我EditText在 LogCat 中将 的值作为字符串获取时,它是带有波斯语字符的数字。奇怪的是,当我在代码中插入一个双数字EditText时,就会出现这个问题,而当用户输入它的数字时,一切正常!解决这个问题的任何想法?有没有办法将带有波斯数字字符的字符串转换为双倍?感谢您的帮助。

4

1 回答 1

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());
于 2016-07-27T08:07:09.033 回答