[JS] 숫자 금액을 한글 금액으로 바꾸기를 했다.
안녕하세요 ki입니다.
이번 Exp는 자바스크립트를 이용한 숫자를 한글로 변환하는 방법입니다.
저는 은행 프로젝트를 참여하며 증명서 작업을 참 많이 했습니다. 그중 "잔액증명서"라는 것도 알게 됐습니다.
말 그대로 계좌에 잔액을 증명하는 증명서입니다.
주의사항은 잔액을 증명하기 위해 하루동안은 계좌에 거래가 정지가 되는 점이 중요합니다.
저는 그런 점을 모르고 증명서 작업 중에 테스트 계좌가 모두 정지가 된 적이 있어 계정계 개발자분들에게 찾아가서
답변을 받았습니다....ㅎㅎ
잔액증명서는 정확한 금액을 표시하기 위해 한글로 표시하기도 하는데요.
공문서에 작성 되는 한글 표기법으로 생각하시면 됩니다.ㅎㅎ
SCRIPT
function won(num) {
var hanA = new Array("","일","이","삼","사","오","육","칠","팔","구","십");
var danA = new Array("","십","백","천","","십","백","천","","십","백","천","","십","백","천");
var result = "";
for(i=0; i<num.length; i++) {
str = "";
han = hanA[num.charAt(num.length-(i+1))];
if(han != "")
str += han+danA[i];
if(i == 4) str += "만";
if(i == 8) str += "억";
if(i == 12) str += "조";
result = str + result;
}
if(num != 0)
result = result + "원";
return result ;
}
위 코드는 100000000(1억원)의 경우 1억 원이 아닌 1억만 원이라고 리턴하는 문제가 있었습니다.
function won2(numStr) {
var currencyFormat = new RegExp(/^\d{1,3}(,\d{3})+$/);
if (isNaN(numStr) && !currencyFormat.test(numStr)) {
return "";
}
var num = numStr.replace(/,/g, "");
var hanA = ["","일","이","삼","사","오","육","칠","팔","구"];
var danA = ["","십","백","천"];
var danGA = ["","만","억","조", "경", "해", "자", "양", "구", "간", "정", "재", "극", "항하사", "아승기", "나유타", "불가사의", "무량대수", "겁", "업"];
var danGAttachA = [];
var result = "";
for (var i=0; i<num.length; i++) {
var str = "";
var char = num.charAt(num.length-(i+1));
var han = hanA[char];
var danChk = Math.floor(i / 4);
if (han != "") {
str += han;
str += danA[i%4];
if (!danGAttachA[danChk]) {
str += danGA[danChk];
danGAttachA[danChk] = true;
}
}
result = str + result;
}
if(num != 0) {
result = result + "원";
}
return result;
}
위 코드가 처음 코드를 변경한 부분입니다.
2번째 코드가 정상적으로 변환이 된다는 것을 알수있습니다.
저는 부족한 자바스크립트 실력을 위해 위 코드들과 다른 방법을 만들어 봤습니다.
function won3(numStr) {
const currencyFormat = /^\d{1,3}(,\d{3})+$/;
if (isNaN(numStr) && !currencyFormat.test(numStr)) return "";
const hanA = ["","일","이","삼","사","오","육","칠","팔","구"];
const danA = ["","십","백","천"];
const danGA = ["","만","억","조", "경", "해", "자", "양", "구", "간", "정", "재", "극", "항하사", "아승기", "나유타", "불가사의", "무량대수", "겁", "업"];
const num = numStr.replace(/,/g, "").split("").reverse().join("");
let result = "";
for (let i = 0; i < num.length; i++) {
const char = parseInt(num.charAt(i));
const han = hanA[char];
const danChk = Math.floor(i / 4);
let str = han ? han + danA[i % 4] : "";
str += han && !result && danGA[danChk] ? danGA[danChk] : "";
result = str + result;
}
return result ? result + "원" : "";
}
참조
https://blog.naver.com/alsemffp234/222290440099
공무원 문서 작성법 날짜와 금액 표기법
공무원 문서 작성법 날짜와 금액 표기법 공문서의 숫자의 표시 숫자: 아라비아 숫자로 표시 날짜: 숫자로 ...
blog.naver.com
[Javascript] 금액을 한글로 변환하기
function viewKorean(num) { var hanA = new Array("","일","이","삼","사","오","육","칠","팔","구","십"); var danA = new Array("","십","백","천","","십","백","천","","십","백","천","","십","백","천"); var result = ""; for(i=0; i 일억
hsol.tistory.com