我正在开发一个波斯语的 Android 应用程序,它从 EditText
输入中获取一个数字。
问题是我正在为 EditText
使用自定义字体,当我尝试获取其中的数字并使用 Double.ValueOf
方法将其转换为 double 时,我得到一个 NumberFormatException
。当我在 LogCat 中得到 EditText
的值作为字符串时,它是带有波斯语字符的数字。
一件奇怪的事情是,当我在 EditText
的代码中插入一个双数时,就会出现这个问题,当用户输入它的数字时,一切正常!
解决这个问题的任何想法?
有没有办法将带有波斯数字字符的字符串转换为 double ?
感谢您的帮助。
最佳答案
您可以使用此代码将您的波斯数字转换为标准数字:
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());
关于java - 将 EditText 中的 unicode 波斯数字字符转换为 android 中的 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18279669/