은행, 금융기관 등과 같이 돈의 금액이 중요한 곳에서는 금액을 표기 할 때 숫자 외 한글로 금액을 표기하기도 한다.
이렇게 한글로 숫자를 표기한 것을 다시 숫자로 변환해 주는 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
*/
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
Comments