자바스크립트 한글 금액 찍기
페이지 정보
작성자 MintState 댓글 0건 조회 8,017회 작성일 17-11-02 09:43본문
자바스크립트 한글 금액 찍기
정규식을 이용한 방법
배열을 이용한 방법
정규식을 이용한 방법
//숫자를 한글로 바꾸어 반환 function getKorNameMoney(amount) { // 공백을 찾는다. // 해석을 하면 "/" 정규식을 시작한다. "^" 해당 받은 문자를 시작한다. // "\s" 공백을 "$" 해당 줄의 끝에서부터 찾아라. "/" 여기까지가 정규식이다. // 정규식.test(정규식체크할변수) 로 공백이 있으면 이 로직을 탄다. if(/^\s*$/.test(amount)) return ""; // 헉 또 정규식이... 자 또 해석을 해 보자. // "/" 정규식 시작하고 "^" 첫 라인부터 "0" 숫자가 0이 "*" 여러개 존재 "|"(Or이죠)하거나 // ","를 "*" 여러개 있다면 replace로 "" 으로 치환하라는거죠. // "/" 정규식 닫은 곳에 i와 g는 i는 대소문자를 무시하라는 거죠. // g는 패턴에 맞는 모든 문자를 찾아라는 거죠. amount = amount.replace(/^0*|,*/ig,""); var korNumName = ["","일","이","삼","사","오","육","칠","팔","구"]; var unit = ["","십","백","천"]; var gunit = [ ["","^[1-4]$",1], ["만","^[5-8]$",5], ["억","^9|1[0-2]$",9], ["조","^1[3-6]$",13], ["경","^1[7-9]|20$", 17], ["해","^2[1-4]$", 21], ["자","^2[5-8]$", 25] ]; var res = ""; // 리턴값 정의 var tmp = ""; // 임시로 숫자 단위별로 저장할 변수 var mxlen = amount.length; var rexp = null; // 해당 정규식을 저장한다. var cpos = 0; for(var i=0; i < mxlen ; i++){ cpos = mxlen - i; tmp = korNumName[parseInt(amount.charAt(i))]; if (tmp != "") { for(var j=0; j < gunit.length; j++){ rexp = new RegExp(gunit[j][1]); if(rexp.test(cpos)){ tmp += unit[(cpos - gunit[j][2])]; if(cpos == gunit[j][2]) tmp += gunit[j][0]; } } } res += (tmp + " "); } res += " 원정"; return res; }
배열을 이용한 방법
hanNumber = new Array ('영', '일', '이', '삼', '사', '오', '육', '칠', '팔', '구' ); fourFour = new Array ('일', '만', '억', '조' ); fourDigit = new Array ('일', '십', '백', '천' ); function getHanAmt(num, strValue) { str = ""; strr = num.split(","); for (i=0; i<strr.length; i++){ str += strr[i]; } num = str; // 한글금액 처리 delimiter = ' '; var endValue = ' 원'; // 원(圓) var endZValue= ' 영'; // 영(零) bPos = 0; // 만(萬), 억(億), 조(兆) sPos = 0; // 십(十), 백(百), 천(千) digit = 0; if (strValue==null || strValue=='0'){ // 원단위 bPos = 0; // 만, 억, 조 sPos = 0; // 십, 백, 천 endValue = " 원"; endZValue = "영 원"; } else if (strValue=='1'){ //만단위 bPos = 1; // 만, 억, 조 sPos = 0; // 십, 백, 천 endValue = " 원"; endZValue = "영 만원"; } else if (strValue=='2') { //십만단위 bPos = 1; // 만, 억, 조 sPos = 1; // 십, 백, 천 endValue = "만 원"; endZValue = "영 십만원"; } szDigit = ''; is_start = false; appendFF = false; len = num.length; szHan = ''; for (i=len-1;i>=0;i--) { szDigit = num.substring(i,i+1); digit = parseInt(szDigit); if (digit!=0) { if (bPos!=0 && sPos==0) { if (is_start==true) szHan += delimiter; szHan += fourFour[bPos]; // 만, 억 appendFF=false; } if (bPos!=0 && appendFF==true) { if (is_start==true) szHan += delimiter; szHan += fourFour[bPos]; // 만, 억 appendFF=false; } if (sPos!=0) szHan += fourDigit[sPos]; // 십, 백, 천 szHan += hanNumber[digit]; // 일, 이, 삼 is_start=true; } else if (sPos==0 && bPos!=0) appendFF = true; sPos++; if (sPos%4==0) { sPos=0; bPos++; if (bPos>=4) return "(범위초과)"; } } if (is_start==false) { rslt = ''; return rslt + endZValue; } else { rslt = ''; for(i = szHan.length - 1; i >= 0; i--) { rslt += szHan.substring(i, i + 1); } return rslt + endValue; } }
|
댓글목록
등록된 댓글이 없습니다.