/* 금액 한글배열 */
var nString = new Array();
nString[0] = "";
nString[1] = "일";
nString[2] = "이";
nString[3] = "삼";
nString[4] = "사";
nString[5] = "오";
nString[6] = "육";
nString[7] = "칠";
nString[8] = "팔";
nString[9] = "구";
/* 금액단위 한글배열 */
var nbString = new Array();
nbString[0] = "";
nbString[1] = "";
nbString[2] = "십";
nbString[3] = "백";
nbString[4] = "천";
nbString[5] = "만";
nbString[6] = "십";
nbString[7] = "백";
nbString[8] = "천";
nbString[9] = "억";
nbString[10] = "십";
nbString[11] = "백";
nbString[12] = "천";
nbString[13] = "조";
nbString[14] = "십";
nbString[15] = "백";
nbString[16] = "천";
function NumberString(obj) {
var nStr = document.getElementById("nStr");
var str = obj.value;
var strCode = "";
var codeStr = "";
var nHan = "";
var cnt = 0;
/* 천조이상이면 */
if(str.length > 16) {
//alert("한글 표현은 천조 이하에 금액까지 가능합니다.");
//경고창 후 마지막 입력값 제거 필요 귀찮아서 안함!! ㅡㅡ;
return false;
}
/* 뒷자리부터 루프 */
for (var i = str.length; i > 0; i--) {
/* 유니코드 구하기 */
strCode = str.charCodeAt(i-1);
/* 숫자가 맞다면 */
if(strCode >= 48 && strCode <= 57) {
cnt++; // 단위계산을 위해 카운팅
codeStr = Number(String.fromCharCode(strCode)); // Number형으로
if(codeStr != 1) {
if(codeStr == 0) {
if(cnt/5 == 1) { // 만단위표현
nHan = nbString[5] + nHan;
} else if(cnt/9 == 1) { // 억단위표현
nHan = nbString[9] + nHan;
} else if(cnt/13 == 1) { // 조단위 표현
nHan = nbString[13] + nHan;
}
} else {
/* 0이 아니면 입력값에 한글과 단위 */
nHan = nString[codeStr] + nbString[cnt] + nHan;
}
} else if(codeStr == 1 && i == str.length) {
/* 1이고 마지막입력값이면 한글 일 표현 */
nHan = nString[codeStr] + nHan;
} else {
if(codeStr == 1 && i == 1 && (cnt == 9 || cnt == 13)) {
/**
* 입력값이 1이고 첫입력값이며 단위가 억이거나 조이면
* 예) 일억 또는 일조
* 억이하 단위에선 일을 표현안되기 때문에 일백만원을 백만원 일십만원을 십만원으로 표현되고
* 억, 조 단위는 일억원 일조원 으로 표현하기 위해
*/
nHan = nString[codeStr] + nbString[cnt] + nHan;
} else {
nHan = nbString[cnt] + nHan;
}
}
/* 단위표현에서 억만, 조억에 두번째 단위 제거 (이거 때문에 삽질했네..) */
nHan = nHan.replace('억만','억').replace('조억','조');
} else {
//alert("숫자로 입력하세요.");
//경고창 후 마지막 입력값 제거 필요 귀찮아서 안함!! ㅡㅡ;
return false;
}
}
nStr.innerHTML = nHan + "원";
}