mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, October 18, 2006

Perl 펄] 숫자 3자리마다 쉼표 찍기 (1000단위 구분 콤마 넣기): Thousands Separators


commify 라는 것은, 숫자 3자리마다 즉 1000단위로 쉼표를 찍는 함수입니다.

엑셀과 달리, 일반적인 프로그램에서는 숫자에 쉼표를 넣으면 더 이상 숫자로서 간주되지 않고 문자열로서만 인식됩니다. 펄도 마찬가지입니다.

commify 함수에 숫자를 입력할 때, 좀 제한이 있습니다. 너무 큰 숫자나 소수점이 있는 숫자는 따옴표로 둘러싸서 문자열화하여 입력해 주어야 정확하게 출력됩니다.


숫자에 1000단위로 쉼표 넣기 예제


#!/usr/bin/perl
use strict; use warnings;


  print commify(6873504617419), "\n";
  # 6,873,504,617,419


  # 소수점까지 정확히 출력하려면 따옴표를 사용해야
  print commify("68735046174190.32643523"), "\n";
  # 68,735,046,174,190.32643523


  # 너무 큰 수라서 정수로 출력되지 않음
  print commify(263124587461082927396438), "\n";
  # 2.63124587461083e+023


  # 따옴표로 둘러, 문자열로 만들면 실수화되지 않음
  print commify("263124587461082927396438"), "\n";
  # 263,124,587,461,082,927,396,438




sub commify {
  $_ = $_[0];
  while ( s/(^[+-]?\d+)(\d{3})/$1,$2/ ) { };
  return $_;
}


숫자의 끝부분부터 매치시키며, 루프 속에서 숫자의 좌측으로 즉 앞쪽으로 이동합니다.

이미 쉼표화가 된 부분이나, 소수부는 (^[+-]?\d+)(\d{3}) 이런 정규식으로 매치되지 않기에, 점점 앞쪽으로 이동하게 됩니다.

$1 은 앞쪽 소괄호가 매치되는 내용
$2 는 뒤쪽 소괄호가 매치되는 내용이기에 그 사이에 쉼표(,)를 넣어주고 치환합니다.



▶▶ 정규식] 천(1000)단위 구분 기호 콤마/쉼표 넣은 숫자 매치 - Regex: Thousands Separators




tag: perl
Perl | 펄
tag: regex
정규식 | 정규표현식 | Regex | Regular Expression

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top