728x90
리액트에서 number 형태의 숫자를 회계 단위 형태로 나타내고 싶었다.
ex) 1000 일 경우 1,000 로 나타내고 555666777 일 경우 555,666,777 나타냄.
case 를 두가지로 구별하여 개발해보았다.
input 값이 "1000" 일수도 있고 1000 일수도 있으니..
CASE1. 숫자 타입의 데이터를 가공하는 경우
Number.prototype.format = function () {
if (this == 0) return 0;
var reg = /(^[+-]?\d+)(\d{3})/;
var n = this + "";
while (reg.test(n)) n = n.replace(reg, "$1" + "," + "$2");
return n;
};
// test
var num = 123456.999;
console.log(num.format()); // 123,456.999
num = 1567895;
console.log(num.format()); // 1,567,895
위에 있는 function 을 적재적소한 곳에 복붙해서 그대로 사용하면 된다.
CASE2. String(문자열) 타입의 데이터를 가공하는 경우
Number.prototype.format = function () {
if (this == 0) return 0;
var reg = /(^[+-]?\d+)(\d{3})/;
var n = this + "";
while (reg.test(n)) n = n.replace(reg, "$1" + "," + "$2");
return n;
};
String.prototype.format = function () {
var num = parseFloat(this);
if (isNaN(num)) return "0";
return num.format();
};
// 문자열 타입 test
console.log("12348".format()); // 12,348
console.log("12348.6456".format()); // 12,348.6456
string의 경우는 float 형태로 형변환 후 예외 처리를 해주고, 다시 number.format function으로 넘겨주는 형태.
위에 있는 function 을 적재적소한 곳에 복붙해서 그대로 사용하면 된다.
728x90