YesYo.com MintState Forums  
뒤로    YesYo.com MintState BBS > Tech > Javascript
검색
멤버이름  오토
비밀번호 
 

 
작성일 : 17-11-02 09:43
자바스크립트 한글 금액 찍기
 글쓴이 : MintState
조회 : 49  
자바스크립트 한글 금액 찍기

정규식을 이용한 방법
//숫자를 한글로 바꾸어 반환
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;
    }
}
Rated 0/5 (0%) (0 Votes)

(\__/)
(='.'=)
(")_(")~
Search Infomation by MintState
MintState

 
 

Total 175
번호 제   목 글쓴이 날짜 조회
175 자바스크립트 한글 금액 찍기 MintState 11-02 50
174 video.js videojs-panorama HTML5 비디오 플레이어 MintState 10-27 54
173 GIF 플레이어(제어) MintState 09-26 122
172 youtube ID 값 추출 MintState 03-08 565
171 Javascript - 비밀번호 유효성 검사(password validation) MintState 11-14 1027
170 하단고정레이아웃 MintState 07-01 1152
169 highcharts MintState 03-05 2140
168 jQuery Masonry 갤러리 리스트 효과 MintState 11-19 3195
167 파이어폭스, IE에 모두 적용되는 iframe 태그 MintState 04-11 8470
166 롤링 위 아래 버튼 적용 MintState 04-06 6394
165 Select 객체 추가 삭제 MintState 07-23 7255
164 숫자에 컴마(,) 쓰고 한글로 숫자 표시 MintState 06-09 6868
163 object 속성보기 MintState 04-29 9080
162 비밀번호 보안등급 체크 (2) MintState 04-29 10118
161 기본 공통 스크립트 MintState 04-16 7576
160 textarea에 줄바꿈 금지와 글자수 제한 MintState 02-17 13508
159 JSON 객체를 String으로 변환하기 MintState 01-19 13933
158 Tooltip 풍선 도움말 MintState 10-27 9654
157 다중 셀렉트 기본 방법 MintState 10-23 7935
156 자바스크립트를 이용한 암호화 MintState 09-01 9368
 1  2  3  4  5  6  7  8  9  
모바일 버전으로 보기
CopyRight ©2004 - 2017, YesYo.com MintState. ™