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

 
Previous Post Python/파이썬] 숫자 천단위 쉼표(콤마) 넣기; Thousands Separator,...메모리 용량, 사용한 사용량, 남은 용량 보기; Free Memory Windows도스(DOS, CMD)창, 영문 Code Page (코드 페이지)로 변경하는 명령어: CH...Linux/리눅스] 남은 메모리 용량, 사용량 보기 명령어; Free-Usage Memor...RAR 도스 창(DOS)/명령프롬프트/텍스트 모드; WinRAR(윈라) 콘솔 버전; RAR...RAR 파일 압축 풀기 열기, rar 푸는 프로그램, 윈라 파일 읽는 법; RAR Extr...배치파일] 엔터 키/줄바꿈/개행문자 넣기; Batch File Enter Key개행 문자(줄바꿈 문자)의 아스키 코드; ASCII Code of Newline-CR-LF...Perl/펄] perl -e 옵션 사용법; 펄 인라인 계산기 스위치; -e (One Lin...포토샵] 사진 날카롭게; 흐릿하게; 초점 흐린 이미지 만들기 필터; Photoshop Sh...

자바스크립트] 숫자 천단위 쉼표(콤마) 넣기; JavaScript Comma Number, Thousands Separator

Wednesday, December 27, 2006

자바스크립트에서, 숫자 천단위, 즉 3자리마다 쉼표를 찍는 방법입니다. 직접 숫자를 분해해서 콤마를 넣는 것은 복잡하기 때문에, 정규식을 사용했습니다. 자바스크립트에서도 펄 스타일의 정규식을 지원합니다.

소수점과, 플러스 마이너스 부호도 처리할 수 있습니다.

숫자 세 자리마다 콤마 찍기 함수 예제; Commify, Commafy


<script type="text/javascript">

var s = commify(-1234567890.123);
document.write(s + '<br />');
// 출력 결과: -1,234,567,890.123


function commify(n) {
  var reg = /(^[+-]?\d+)(\d{3})/;   // 정규식
  n += '';                          // 숫자를 문자열로 변환

  while (reg.test(n))
    n = n.replace(reg, '$1' + ',' + '$2');

  return n;
}

</script>


정규식 설명:

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

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

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


그리고
while (reg.test(n))
이 부분은 정규식이 매치되는 동안 계속 루프를 돌리라는 뜻입니다. test() 메소드(METHOD; 함수)는, 문자열 안에서 정규식(Pattern)이 매치되는지 아닌지 테스트합니다. 매치되면 true, 아니면 false 를 반환합니다.



자바스크립트로 숫자 천단위마다 쉼표를 넣는 소스는 많이 있는데, 소수점이나 플러스/마이너스 부호를 처리하지 못하는 문제가 있어서, 실제 사용에는 무리가 있었습니다. 그래서 위와 같은 함수를 만들어 보았습니다.


☞ HTML/CSS/자바스크립트(JavaScript)

☞ 정규식/정규표현식(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