将英文数字转换为阿拉伯语的最佳方式

con*_*ius 19 java numbers

可能重复:
将字符串转换为java中的另一个语言环境

我想把java String包含英文数字的阿拉伯语转换为阿拉伯语,所以我做了这个

int  arabic_zero_unicode= 1632;
String str = "13240453";
StringBuilder builder = new StringBuilder();

for(int i =0; i < str.length(); ++i ) {
    builder.append((char)((int)str.charAt(i) - 48+arabic_zero_unicode));
}

System.out.println("Number in English : "+str);
System.out.println("Number In Arabic : "+builder.toString() );
Run Code Online (Sandbox Code Playgroud)

输出

Number in English : 13240453
Number In Arabic : ????????
Run Code Online (Sandbox Code Playgroud)

还有另一种更有效的方法吗?

Zéy*_*hin 37

这比您的版本提供了5倍的加速,字符串长度为3036.这也会检查以确保您只更改数字.没有if/else检查,速度约为6倍.

如果字符不正确/放错地方,请原谅我.我不得不从其他来源找到其中一些.

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() );
Run Code Online (Sandbox Code Playgroud)

  • 波斯字符将是'char [] persianChars = {'0','1','2','3','4','5','6','7','8','9' };" (7认同)
  • 我无法在Stackoverflow上以正确的方向显示阿拉伯数字.它们应该是从"0"到"9",而不是从"9"到"0". (2认同)