为了账号安全,请及时绑定邮箱和手机立即绑定

在Java中将String转换为另一个语言环境

在Java中将String转换为另一个语言环境

慕桂英3389331 2019-11-19 09:55:08
嗨,我需要将阿拉伯/波斯数字转换为等于英语的数字(例如,将“ ۲”转换为“ 2”),该怎么办?谢谢
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

我建议您有一个十位数的查找字符串,并一次替换所有的位数。


public static void main(String... args) {

    System.out.println(arabicToDecimal("۴۲"));

}


private static final String arabic = "\u06f0\u06f1\u06f2\u06f3\u06f4\u06f5\u06f6\u06f7\u06f8\u06f9";

private static String arabicToDecimal(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);

}

版画


42

使用字符串作为查询的原因是其他字符如原样. - ,保留。实际上,十进制数将保持不变。


查看完整回答
反对 回复 2019-11-19
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

我java.math.BigDecimal是按班级完成的,下面是代码段


String arabicNumerals = "۴۲۴۲.۴۲";

String englishNumerals = new BigDecimal(arabic).toString();

System.out.println("Number In Arabic : "+arabicNumerals);

System.out.println("Number In English : "+englishNumerals);

结果


Number In Arabic : ۴۲۴۲.۴۲

Number In English : 4242.42

注意:如果arabicNumerals中没有数字以外的其他字符,则上述代码将不起作用,例如:۴,۲۴۲.۴۲将得到java.lang.NumberFormatException,因此您可以使用Character.isDigit(char ch)其他逻辑删除其他字符并使用上述代码。所有正常情况下都能正常工作!


美好的一天


查看完整回答
反对 回复 2019-11-19
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

我发现了一种更简单,更快捷的方法,其中也包括两个阿拉伯代码页。


public static String convertToEnglishDigits(String value)

{

     String newValue = value.replace("١", "1").replace("٢", "2").replace("٣", "3").replace("٤", "4").replace("٥", "5")

             .replace("٦", "6").replace("7", "٧").replace("٨", "8").replace("٩", "9").replace("٠", "0")

             .replace("۱", "1").replace("۲", "2").replace("۳", "3").replace("۴", "4").replace("۵", "5")

             .replace("۶", "6").replace("۷", "7").replace("۸", "8").replace("۹", "9").replace("۰", "0");


     return newValue;

}

如果您更改替换来源,它将以英文格式返回数字,反之亦然。

(“ ۰”,“ 0”)到(“ 0”,“ ۰”)


查看完整回答
反对 回复 2019-11-19
  • 3 回答
  • 0 关注
  • 359 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信