Преобразование символов юникод-фарси в EditText для удвоения в Android

Я работаю над приложением для Android на персидском языке, который получает номер от EditText вход. проблема в том, что я использую пользовательский шрифт для EditText и когда я пытаюсь получить число в нем и преобразовать его в удвоение с помощью Double.ValueOf метод я получаю NumberFormatExceptionКогда я получу значение EditText в качестве строки в LogCat это число с символами фарси. Странная вещь, когда я вставляю двойное число в коде в EditText эта проблема возникает, и когда пользователь вводит его номер, все в порядке! Есть идеи по решению этой проблемы? Есть ли способ преобразовать строку с символами фарси в удвоение? Спасибо за помощь.

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());
Другие вопросы по тегам