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