Snippets

한글로 표기한 숫자를 정수로 변환 하여 출력하는 Java소스코드

은행, 금융기관 등과 같이 돈의 금액이 중요한 곳에서는 금액을 표기 할 때 숫자 외 한글로 금액을 표기하기도 한다.
이렇게 한글로 숫자를 표기한 것을 다시 숫자로 변환해 주는 Java Class 코드이다.
이백칠심오만이천칠백 이렇게 한글로 표현된 숫자를 2752700 이렇게 숫자로 변환한다.

예제 코드

import java.util.*;

public class HangulToNum {
    public static void main(String[] args) {
        String input = "이천오백삼십만사천오백육십칠";
        System.out.println(input);
        System.out.println(hangulToNum(input));
    }
    public static long hangulToNum(String input) {
        long result = 0;
        long tmpResult = 0;
        long num = 0;
        final String NUMBER = "영일이삼사오육칠팔구";
        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);
            if(check == -1) { //단위인 경우
                if("만억조".indexOf(token) == -1) {
                    tmpResult += (num != 0 ? num : 1) * UNIT_NUM[UNIT.indexOf(token)];
                } else {
                    tmpResult += num;
                    result += (tmpResult != 0 ? tmpResult : 1) * UNIT_NUM[UNIT.indexOf(token)];
                    tmpResult = 0;
                }
                num = 0;
            } else { //숫자인 경우
                num = check;
            }
        }

        return result + tmpResult + num;
    }
}

/* 결과
 * 이천오백삼십만사천오백육십칠
 * 25304567
 */