汉字转换为阿拉伯数字,一百三十四亿一千零二十三万六千六百零九.
code:
package number_converter;
//汉字转换为阿拉伯数字
//一百三十四亿一千零二十三万六千六百零九
//最终应该转为这样:13410236609
public class MyConverter2 {
public static void main(String[] args) {
long d=convert("一百三十四亿一千零二十三万六千六百零九");
System.out.println(d);
}
public static long convert(String s){
String [] s1=s.split("亿");
long num=restore(s1[0]) *100000000L;
String [] s2=s1[1].split("万");
num=restore(s2[0]) *10000L +num;
num=num+restore(s2[1]);
return num;
}
public static int convertNumber(char c){
int num=0;
switch(c){
case '零': num= 0; break;
case '一': num= 1; break;
case '二': num= 2; break;
case '三': num= 3; break;
case '四': num= 4; break;
case '五': num= 5; break;
case '六': num= 6; break;
case '七': num= 7; break;
case '八': num= 8; break;
case '九': num= 9; break;
}
return num;
}
// 比如 一千三百五十1 还原为1351
public static int restore(String s){
char [] array=s.toCharArray();
int num=0;
for (int i=0; i<array.length-1; i++){
if (array[i] != '零' && array[i+1]=='千' ){
num=convertNumber( array[i] )*1000;
}else
if (array[i] != '零' && array[i+1]=='百' ){
num=num + convertNumber( array[i] )*100;
}else
if (array[i] != '零' && array[i+1]=='十' ){
num=num + convertNumber( array[i] )*10;
}
}
return num+convertNumber(array[array.length-1]);
}
}
|
|