java 숫자를 한글로 변환 해주는 메소드


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;     
       }
 

댓글

이 블로그의 인기 게시물

사자성어

외계인(에어럴) 인터뷰 전체 문서

스타크래프트 무한 미네랄 만드는 방법