将英语数字转换为阿拉伯语的最佳方法 [英] Best way to convert English numbers to Arabic

查看:445
本文介绍了将英语数字转换为阿拉伯语的最佳方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Possible Duplicate:
Convert String to another locale in java

我想将包含英文数字的java String转换为阿拉伯数字,所以我做到了

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

投入

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

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

is there another more efficient way to do this ?

推荐答案

这会比长度3036的版本提高5倍. 这还将检查以确保您仅更改数字.如果不执行if/else检查,则可以使速度提高6倍.

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

这篇关于将英语数字转换为阿拉伯语的最佳方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆