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

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

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
 */

 

 

CC BY-NC-SA 4.0 This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.