Question: > 
> **Possible Duplicate:**  
> 
> [Convert String to another locale in java](https://stackoverflow.com/questions/5316131/convert-string-to-another-locale-in-java) 
> 
> 
> 

I want to convert a `java` `String` that contains english numbers to arabic one's so i make this 

```
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() );

```

the out put 

```
Number in English : 13240453
Number In Arabic : ١٣٢٤٠٤٥٣

```

is there another more efficient way to do this ?

Answer: 
This gives a 5x speedup over your version with a string of length 3036.
This also checks to make sure you're only changing digits. It's about a 6x speedup without the if/else check.

Please pardon me if the characters are incorrect/misplaced. I had to find some of them from another source.

```
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() );

```
There are a couple of Java classes that you can utilize to accomplish this in a high level fashion without explicit assumptions on Unicode table structure. For example you can check out [DecimalFormatSymbols](http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormatSymbols.html). However the idea will be the same as the code sample you've provided. The locale conversion methods or classes in Java library will only render the way numbers are displayed, they do not convert numeral symbols in a trivial way.