2017년 10월 14일 토요일

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

댓글 없음: