3 回答
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
使用字符串作为查询的原因是其他字符如原样. - ,保留。实际上,十进制数将保持不变。
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)其他逻辑删除其他字符并使用上述代码。所有正常情况下都能正常工作!
美好的一天
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”,“ ۰”)
添加回答
举报