3 回答

TA貢獻1828條經驗 獲得超4個贊
public static void main(String args[]){
String ss = "二百三十三";
System.out.println(getStringToNumber(ss));
}
/**
* 獲取一個文本的數字表達形式
* @param cNumber
* @return
*/
public static int getStringToNumber(String cNumber){
Map<Character, Character> numMap = new HashMap<Character, Character>(10);
numMap.put('一', '1');
numMap.put('二', '2');
numMap.put('三', '3');
numMap.put('四', '4');
numMap.put('五', '5');
numMap.put('六', '6');
numMap.put('七', '7');
numMap.put('八', '8');
numMap.put('九', '9');
numMap.put('零', '0');
char[] chars = cNumber.toCharArray();
StringBuilder result = new StringBuilder();
for(int i = 0; i < chars.length; i++){
Character number = numMap.get(chars[i]);
if(number != null){
result.append(number);
}
}
return Integer.parseInt(result.toString());
}

TA貢獻1906條經驗 獲得超3個贊
我覺得可以做判斷替換,先把大寫中文截取出來,判斷第一個字符,如果是五,就替換5,總共有10個判斷,然后判斷第二個字符,如果是百,先不做操作,同樣的如果是十,也不做操作,如果是數字,就拼接在后面,假如是五百二十,拼接后是52 這時判斷如果含有百,也就是3位數,但是你只有兩位數,自動補全一個0,同樣的,如果是五十,得到是5,含有10代表有兩位數,自動補全0,則為50
添加回答
舉報