일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Array
- input
- js
- date
- 배열
- string
- Java
- windows
- list
- 테이블
- Files
- 자바스크립트
- IntelliJ
- 문자열
- html
- Visual Studio Code
- CSS
- Eclipse
- vscode
- 인텔리제이
- javascript
- 이클립스
- Button
- 이탈리아
- table
- CMD
- 자바
- json
- Maven
- ArrayList
- Today
- Total
어제 오늘 내일
[Javascript] 숫자 3자리(천단위) 마다 콤마 찍는 2가지 방법 본문
숫자 3자리마다(천단위) 콤마를 찍어서 문자열로 리턴하는 2가지 방법을 소개합니다.
1. 정규식(Regular Expression) 이용하기
2. toLocaleString() 함수 이용하기
1. 정규식(Regular Expression) 이용하기
const n1 = 12345.6789;
const n2 = -12345.6789;
const cn1 = n1.toString()
.replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");
const cn2 = n2.toString()
.replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");
document.writeln(cn1);
document.writeln('<br>');
document.writeln(cn2);
정규식을 사용하여 천단위마다 콤마를 추가한 예제입니다.
2. toLocaleString() 함수 이용하기
toLocaleString() 함수
toLocaleString() 함수를 사용하여 간단하게 천단위마다 콤마를 추가할 수 있습니다.
number.toLocaleString(locales, options)
toLocaleString() 함수는 숫자를 로컬의 language format에 맞는 문자열로 변경해 줍니다.
파라미터로 아무것도 전달되지 않으면 사용자 로컬 환경의 locale을 default로 사용합니다.
파라미터
locales
코드 | 설명 | 예시 (1234567) |
ar-SA | Arabic (Saudi Arabia) | ١٬٢٣٤٬٥٦٧ |
bn-BD | Bangla (Bangladesh) | ১২,৩৪,৫৬৭ |
bn-IN | Bangla (India) | ১২,৩৪,৫৬৭ |
cs-CZ | Czech (Czech Republic) | 1 234 567 |
da-DK | Danish (Denmark) | 1.234.567 |
de-AT | Austrian German | 1 234 567 |
de-CH | "Swiss" German | 1’234’567 |
de-DE | Standard German (as spoken in Germany) | 1.234.567 |
el-GR | Modern Greek | 1.234.567 |
en-AU | Australian English | 1,234,567 |
en-CA | Canadian English | 1,234,567 |
en-GB | British English | 1,234,567 |
en-IE | Irish English | 1,234,567 |
en-IN | Indian English | 12,34,567 |
en-NZ | New Zealand English | 1,234,567 |
en-US | US English | 1,234,567 |
en-ZA | English (South Africa) | 1 234 567 |
es-AR | Argentine Spanish | 1.234.567 |
es-CL | Chilean Spanish | 1.234.567 |
es-CO | Colombian Spanish | 1.234.567 |
es-ES | Castilian Spanish (as spoken in Central-Northern Spain) | 1.234.567 |
es-MX | Mexican Spanish | 1,234,567 |
es-US | American Spanish | 1,234,567 |
fi-FI | Finnish (Finland) | 1 234 567 |
fr-BE | Belgian French | 1 234 567 |
fr-CA | Canadian French | 1 234 567 |
fr-CH | "Swiss" French | 1 234 567 |
fr-FR | Standard French (especially in France) | 1 234 567 |
he-IL | Hebrew (Israel) | 1,234,567 |
hi-IN | Hindi (India) | 12,34,567 |
hu-HU | Hungarian (Hungary) | 1 234 567 |
id-ID | Indonesian (Indonesia) | 1.234.567 |
it-CH | "Swiss" Italian | 1’234’567 |
it-IT | Standard Italian (as spoken in Italy) | 1.234.567 |
ja-JP | Japanese (Japan) | 1,234,567 |
ko-KR | Korean (Republic of Korea) | 1,234,567 |
nl-BE | Belgian Dutch | 1.234.567 |
nl-NL | Standard Dutch (as spoken in The Netherlands) | 1.234.567 |
no-NO | Norwegian (Norway) | 1 234 567 |
pl-PL | Polish (Poland) | 1 234 567 |
pt-BR | Brazilian Portuguese | 1.234.567 |
pt-PT | European Portuguese (as written and spoken in Portugal) | 1 234 567 |
ro-RO | Romanian (Romania) | 1.234.567 |
ru-RU | Russian (Russian Federation) | 1 234 567 |
sk-SK | Slovak (Slovakia) | 1 234 567 |
sv-SE | Swedish (Sweden) | 1 234 567 |
ta-IN | Indian Tamil | 12,34,567 |
ta-LK | Sri Lankan Tamil | 12,34,567 |
th-TH | Thai (Thailand) | 1,234,567 |
tr-TR | Turkish (Turkey) | 1.234.567 |
zh-CN | Mainland China, simplified characters | 1,234,567 |
zh-HK | Hong Kong, traditional characters | 1,234,567 |
zh-TW | Taiwan, traditional characters | 1,234,567 |
options
- currency
- currencyDisplay : "symbol"(default), "code", "name"
- localeMatcher : "best-fit"(default), "lookup"
- maximumFractionDigits : 0~20 (default : 3)
- maximumSignificantDigits : 1~20 (default : 21)
- minimumFractionDigits : 0~20(default: 3)
- minimumIntegerDigits : 1~21 (default: 1)
- minimumSignificantDigits : 1~21 (default : 21)
- style : "currency", "deciaml" (default), "percent"
- useGrouping : true(default) /false
예제1. toLocaleString() 함수 사용하기
const n1 = 12345.6789;
const n2 = -12345.6789;
const cn1 = n1.toLocaleString();
const cn2 = n2.toLocaleString();
document.writeln(cn1);
document.writeln('<br>');
document.writeln(cn2);
이 예제는 toLocaleString() 함수를 이용하여 숫자를 콤마가 있는 문자열로 변환하였습니다.
이때, toLocaleString() 함수의 파라미터로는 아무것도 전달하지 않았는데
그러면 사용자 PC의 환경 locale을 따르게 됩니다.
사용자 PC환경의 locale은 다음과 같이 확인해 볼수 있습니다.
document.writeln(navigator.language);
저는 "ko-KR"이 나옵니다.
자동으로 "ko-KR" locale이 적용이 되었을 것입니다.
이 결과가 다른 값이 나온다면, 위 locale 표에서 number format 예시를 확인하고,
숫자 3자리마다 콤마를 찍어주는 locale로 설정을 해주면 됩니다.
예제2. locale 값 지정하기
const n1 = 12345.6789;
const n2 = -12345.6789;
const cn1 = n1.toLocaleString('ko-KR');
const cn2 = n2.toLocaleString('ko-KR');
document.writeln(cn1);
document.writeln('<br>');
document.writeln(cn2);
toLocaleString()을 호출할 때, 파라미터로 locale 코드를 넘겨주었습니다.
이제 사용자의 PC가 어떤 locale이든지, 위 코드를 실행할 때는 'ko-KR' locale이 적용될 것입니다.
예제3. 소수점 자릿수 지정하기
const n1 = 12345.6789;
const n2 = -12345.6789;
const option = {
maximumFractionDigits: 4
};
const cn1 =
n1.toLocaleString('ko-KR', option);
const cn2 =
n2.toLocaleString('ko-KR', option);
document.writeln(cn1);
document.writeln('<br>');
document.writeln(cn2);
예제1과 예제2의 결과에 조금 이상한 점이 있습니다.
원본 숫자인 n1과 n2는 소수점 4자리까지 표현하고 있는데
toLocaleString() 함수를 통해서 나온 결과는 소수점 3자리까지만 표현하고 있습니다.
이것은 toLocaleString() 함수의 default fraction digit 값이 3이기 때문입니다.
위 예제에서는 소수점 4자리까지 표현해주어야 하므로,
toLocaleString() 함수를 호출할 때 두번째 파라미터로 option 객체를 전달하였습니다.
그리고, 이 option 객체 안에는 maximumFractionDigits 값이 4로 지정되었습니다.
따라서 위 예제는 소수점 4자리까지 잘 출력되는 것을 확인 할 수 있습니다.
Javascript에서 소수점 천단위마다 콤마를 찍어서, 문자열(string)로 리턴하는 방법을 알아보았습니다.
'IT > Javascript' 카테고리의 다른 글
[Javascript] 테이블 합계 계산하기 (0) | 2020.11.29 |
---|---|
[Javascript] 테이블에 행 추가, 삭제하기 (버튼 클릭) (1) | 2020.11.29 |
[Javascript] 사용자 입력을 도와주는 datalist 알아보기 (0) | 2020.11.28 |
[Javascript] 콤보박스(select)에서 선택한 값, 텍스트 출력하기 (1) | 2020.11.28 |
[Javascript] input 박스에 영어만 입력되도록 하는 2가지 방법 (0) | 2020.11.28 |