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

 
Previous Post 도스.BAT] 경로(Path) 알아내기/ 패스 문자열 얻어 오기: DOS 배치 파일ZIP, RAR 압축파일 속, 파일 이름 변경; 압축된 파일명 리네임(Rename)리눅스 파일 찾기 명령: find 사용법 예제, Linux File Find Command...자바.Java] 실수를 16진수Hex로, float를 2진수로 변환, double형을 lo...자바.Java] 정수 실수 종류(데이터형;자료형), 최소값/최대값: int, long, f...펄.Perl] 숫자 배열에서, 최소값 최대값 찾기 - Find Min Max Value펄.Perl] 문자열 합치기, 문자열 연결/추가/병합: String Concatenate우분투 리눅스] 한글/한자 입력키 - Linux Hangul Hanja Input Key우분투 리눅스] 텍스트 모드만 설치하는 CD; GUI 없는 서버 버전, Ubuntu Lin...VMware] 윈도우용 비디오 드라이버 설정/설치법, VM웨어 Video Card Driv...

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

Wednesday, October 18, 2006

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

☞ Perl(펄)

☞ 정규식/정규표현식(Regex; Regular Expression)

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

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