首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将英文数字转换为阿拉伯语的最佳方法

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

Stack Overflow用户
提问于 2012-07-13 18:53:15
回答 2查看 15K关注 0票数 21

可能重复:

Convert String to another locale in java

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

代码语言:javascript
运行
复制
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() );

输出

代码语言:javascript
运行
复制
Number in English : 13240453
Number In Arabic : ١٣٢٤٠٤٥٣

有没有其他更有效的方法来做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-13 19:23:20

这比你使用长度为3036的字符串的版本快5倍。这也会进行检查,以确保您只更改数字。在没有if/else检查的情况下,速度提升了大约6倍。

如果字符不正确/放错了位置,请原谅。我不得不从另一个来源找到其中的一些。

代码语言:javascript
运行
复制
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() );
票数 40
EN

Stack Overflow用户

发布于 2012-07-13 19:30:36

有几个Java类可以用来以高级方式实现这一点,而无需对Unicode表结构进行显式假设。例如,您可以查看DecimalFormatSymbols。但是,其思想将与您提供的代码示例相同。Java库中的语言环境转换方法或类只会呈现数字的显示方式,它们不会以一种简单的方式转换数字符号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11469058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档