3 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
我建議您有一個(gè)十位數(shù)的查找字符串,并一次替換所有的位數(shù)。
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);
}
版畫(huà)
42
使用字符串作為查詢(xún)的原因是其他字符如原樣. - ,保留。實(shí)際上,十進(jìn)制數(shù)將保持不變。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
我java.math.BigDecimal是按班級(jí)完成的,下面是代碼段
String arabicNumerals = "????.??";
String englishNumerals = new BigDecimal(arabic).toString();
System.out.println("Number In Arabic : "+arabicNumerals);
System.out.println("Number In English : "+englishNumerals);
結(jié)果
Number In Arabic : ????.??
Number In English : 4242.42
注意:如果arabicNumerals中沒(méi)有數(shù)字以外的其他字符,則上述代碼將不起作用,例如:?,???.??將得到j(luò)ava.lang.NumberFormatException,因此您可以使用Character.isDigit(char ch)其他邏輯刪除其他字符并使用上述代碼。所有正常情況下都能正常工作!
美好的一天

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
我發(fā)現(xiàn)了一種更簡(jiǎn)單,更快捷的方法,其中也包括兩個(gè)阿拉伯代碼頁(yè)。
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;
}
如果您更改替換來(lái)源,它將以英文格式返回?cái)?shù)字,反之亦然。
(“ ?”,“ 0”)到(“ 0”,“ ?”)
添加回答
舉報(bào)