java 숫자를 한글로 변환 해주는 메소드
그런데 이것은 약간 문제가 있네요
몇백억 넘어가면 억만 으로 표시하는데 이것을 수정해야 할듯 합니다.
public String convertHangul(String money){
String[] han1 = {"","일","이","삼","사","오","육","칠","팔","구"};
String[] han2 = {"","십","백","천"};
String[] han3 = {"","만","억","조","경"};
StringBuffer result = new StringBuffer();
int len = money.length();
for(int i=len-1; i>=0; i--){
result.append(han1[Integer.parseInt(money.substring(len-i-1, len-i))]);
if(Integer.parseInt(money.substring(len-i-1, len-i)) > 0)
result.append(han2[i%4]);
if(i%4 == 0)
result.append(han3[i/4]);
}
return result.toString();
}
===========================================================
숫자를 한글로 변환
public static long hangulToNum(String input){
long result = 0;
long tmpResult =0;
long num = 0;
final StringNUMBER="영일이삼사오육칠팔구";
final String UNIT= "십백천만억조";
final long[] UNIT_NUM = {
10,100,1000,10000,(long)Math.pow(10, 8),(long)Math.pow(10,12)
};
StringTokenizer st = new StringTokenizer(input,UNIT,true);//단위
while(st.hasMoreTokens()){//삼,*,*,삼,*,*
String token =st.nextToken();
//숫자인지 단위(UNIT)인지 확인한다.
int check =NUMBER.indexOf(token);//1)삼 ->3 2)십 ->-1
System.out.println("CHECK:"+check);
if(check==-1){//단위인경우
if("만억조".indexOf(token)==-1){//만억조가 아니면 3)만
tmpResult+=(num!=0?num:1)*UNIT_NUM[UNIT.indexOf(token)];//num=30 * 10000
}else{
//만,억,조 경우 ->result
tmpResult +=num;
result +=(tmpResult!=0?tmpResult:1)*UNIT_NUM[UNIT.indexOf(token)];
tmpResult = 0;
}
num = 0;
}else{//숫자
num = check;
}
}
System.out.println("result:"+result);
System.out.println("tmpResult:"+tmpResult);
System.out.println("num:"+num);
return result +tmpResult + num;
}