Преобразование символов юникод-фарси в 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());