header-img
Info :
  1. CASE1. 숫자 타입의 데이터를 가공하는 경우
  2. CASE2. String(문자열) 타입의 데이터를 가공하는 경우
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
더보기
FRONTEND/React