java - 将 EditText 中的 unicode 波斯数字字符转换为 android 中的 double

标签 java android unicode persian farsi

我正在开发一个波斯语的 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/

相关文章:

java - 从单独的 jar 调用 .asSubclass 时抛出 ClassCastException

java - 如何在 Spring Data MongoDB 存储库中查询日期?

java - Spring MVC动态列表表单提交

php - 什么时候需要在 PHP 中启用 mbstring?

javascript - 如何从 JavaScript 中的字符串中获取 ASCII 码?

c++ - utf-8 与 utf-16 之间的问题

java - 常量接口(interface)反模式说明

android - 弹出菜单从操作栏中的图标展开/折叠

android - 如何在 Android 中的线性布局周围显示阴影?

java - 重新打开应用程序时,布局颜色更改不会保留