자바스크립트 한글 금액 찍기
페이지 정보
작성자 MintState 댓글 0건 조회 8,581회 작성일 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;
}
}|
|
댓글목록
등록된 댓글이 없습니다.





자바스크립트 한글 금액 찍기