将EditText中的unicode波斯数字符转换为在android中加倍

时间:2013-08-16 18:13:48

标签: java android unicode persian farsi

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

1 个答案:

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