2014-04-01 32 views
3

我使用此代碼將英文數字翻譯成阿拉伯語。但是現在我正在嘗試將阿拉伯數字改成英文數字。英文數字的阿拉伯數字android

private void decimalToArabic() { 
    String str = showOutputEdit.getText().toString(); 
    char[] arabicChars = {'٠','١','٢','٣','٤','٥','٦','٧','٨','٩'}; 
    // char[] arabicChars = {'٩','٨','٧','٦','٥','٤','٣','٢','١','٠'}; 
     StringBuilder builder = new StringBuilder(); 
     for(int i =0;i<str.length();i++) 
     { 
      if(Character.isDigit(str.charAt(i))) 
      { 
       builder.append(arabicChars[(int)(str.charAt(i))-48]); 
      } 
      else 
      { 
       builder.append(str.charAt(i)); 
      } 
     } 
     System.out.println("Number in English : "+str); 
     System.out.println("Number In Arabic : "+builder.toString()); 
     showOutputEdit.setText(builder.reverse().toString()); 
} 

我需要改變什麼?

回答

4

我認爲你可以使用這樣的事情。(這裏我整型轉換爲阿拉伯語)

public String convertToArabic(int value) 
{ 
    String newValue = (((((((((((value+"").replaceAll("1", "١")).replaceAll("2", "٢")).replaceAll("3", "٣")).replaceAll("4", "٤")).replaceAll("5", "٥")).replaceAll("6", "٦")).replaceAll("7", "٧")).replaceAll("8", "٨")).replaceAll("9", "٩")).replaceAll("0", "٠"));  
    return newValue; 
} 
+1

它爲個位數。但我有一組數字字符串。 –

+0

一個例子? – Sanu

+1

它可以用於任何數字。例如convertToArabic(4567)給出4567的阿拉伯文字符串值 – Sanu

2

阿拉伯語字符數組必須扭轉

WRONG

char[] chars = {'٠','١','٢','٣','٤','٥','٦','٧','٨','٩'}; 

RIGHT

char[] chars = {'٩','٨','٧','٦','٥','٤','٣','٢','١','٠'}; 

這只是因爲stackoverflow編輯器,但如果你將複製文本和粘貼(CTRL + CCTRL + V)它會工作得很好。

這樣的功能看起來像這樣

private static String toArabicDigits(String eng) { 

    char[] chars = {'٩','٨','٧','٦','٥','٤','٣','٢','١','٠'}; 
    StringBuilder builder = new StringBuilder(); 

    for (int i = 0; i < eng.length(); ++i) { 
     if (Character.isDigit(eng.charAt(i))) { 
      builder.append(chars[(int)(eng.charAt(i))-48]); 
      System.out.println("char - " + eng.charAt(i) + " " + (int)(eng.charAt(i)-48) + " - " + chars[(int)(eng.charAt(i))-48]); 
     } else { 
      builder.append(eng.charAt(i)); 
     } 
    } 

    return builder.toString(); 
} 
2
private static String arabicToenglish(String number) 
{ 
    char[] chars = new char[number.length()]; 
    for(int i=0;i<number.length();i++) { 
    char ch = number.charAt(i); 
    if (ch >= 0x0660 && ch <= 0x0669) 
     ch -= 0x0660 - '0'; 
    else if (ch >= 0x06f0 && ch <= 0x06F9) 
     ch -= 0x06f0 - '0'; 
    chars[i] = ch; 
    } 
    return new String(chars); 
} 
相關問題