Number.prototype.toLocaleString()
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
Number å¼ç toLocaleString() æ¹æ³è¿åè¿ä¸ªæ°åç¹å®äºè¯è¨ç¯å¢ç表示å符串ãå¨å
·æ Intl.NumberFormat API æ¯æçå®ç°ä¸ï¼æ¤æ¹æ³ä»
ä»
ç®åè°ç¨äº Intl.NumberFormatã
彿 ¼å¼åå¤§éæ°åæ¶ï¼æå¥½å建ä¸ä¸ª Intl.NumberFormat 对象ï¼å¹¶ä½¿ç¨å
¶æä¾ç format() æ¹æ³ã
å°è¯ä¸ä¸
function eArabic(x) {
return x.toLocaleString("ar-EG");
}
console.log(eArabic(123456.789));
// Expected output: "١٢٣٬٤٥٦٫٧٨٩"
console.log(eArabic("123456.789"));
// Expected output: "123456.789"
console.log(eArabic(NaN));
// Expected output: "ÙÙØ³ رÙÙ
"
è¯æ³
toLocaleString()
toLocaleString(locales)
toLocaleString(locales, options)
åæ°
locales å options åæ°è®©åºç¨ç¨åºå¯ä»¥æå®è¦è¿è¡æ ¼å¼è½¬æ¢çè¯è¨ï¼å¹¶ä¸å®å¶å½æ°çè¡ä¸ºã
å¨ä½¿ç¨å
·æ Intl.NumberFormat API æ¯æçå®ç°æ¶ï¼è¿äºåæ°ä¸ Intl.NumberFormat() æé 彿°çåæ°ç¸åã䏿¯æ Intl.NumberFormat æ¶ï¼ä¼å¿½ç¥åæ°ï¼ä½¿å¾ä½¿ç¨çåºå设置åè¿åçåç¬¦ä¸²æ ¼å¼å®å
¨ç±å®ç°å³å®ã
localeså¯é-
缩åè¯è¨ä»£ç ï¼BCP 47 language tagï¼çå符串æè è¿äºåç¬¦ä¸²ç»æçæ°ç»ãä¸
Intl.NumberFormat()æé 彿°çlocalesåæ°ç¸åã卿
Intl.NumberFormatæ¯æçå®ç°ä¸ï¼å¾å¾ä½¿ç¨ä¸»æºçåºå设置ï¼è¿ä¸ªåæ°æ¯å¿½ç¥çã optionså¯é-
è°æ´è¾åºæ ¼å¼ç对象ãä¸
Intl.NumberFormat()æé 彿°çoptionsåæ°ç¸åã卿
Intl.NumberFormatæ¯æçå®ç°ä¸ï¼è¿ä¸ªåæ°æ¯è¢«å¿½ç¥çã
请æ¥é
Intl.NumberFormat() æé 彿°ä»¥äºè§£è¿äºåæ°ç详ç»ä¿¡æ¯ï¼ä»¥åå¦ä½ä½¿ç¨å®ä»¬ã
è¿åå¼
è¿åä¸ä¸ªè¯è¨ç¯å¢ä¸ç表示å符串ã
å¨ä½¿ç¨ Intl.NumberFormat çå®ç°ä¸ï¼è¿ä¸ new Intl.NumberFormat(locales, options).format(number) è°ç¨çä»·ã
示ä¾
>ä½¿ç¨ toLocaleString()
卿²¡ææå®åºåçåºæ¬ä½¿ç¨æ¶ï¼è¿å使ç¨é»è®¤çè¯è¨ç¯å¢åé»è®¤éé¡¹æ ¼å¼åçå符串ã
const number = 3500;
console.log(number.toLocaleString()); // "3,500"ï¼å¦æåºå设置为ç¾å½è±è¯
æ£æ¥ locales å options åæ°çæ¯æ
locales å options åæ°å¯è½ä¸è¢«ææå®ç°æ¯æï¼å 为å½é
å API çæ¯ææ¯å¯éçï¼ä¸äºç³»ç»å¯è½æ²¡æå¿
è¦çæ°æ®ãå¯¹äºæ²¡æå½é
忝æçå®ç°ï¼toLocaleString() æ»æ¯ä½¿ç¨ç³»ç»çåºå设置ï¼è¿å¯è½ä¸æ¯ä½ æ³è¦çãå ä¸ºä»»ä½æ¯æ locales å options åæ°çå®ç°å¿
é¡»æ¯æ Intl APIï¼ä½ å¯ä»¥æ£æ¥åè
çå卿¥ç¡®å®æ¯å¦æ¯æï¼
function toLocaleStringSupportsLocales() {
return (
typeof Intl === "object" &&
!!Intl &&
typeof Intl.NumberFormat === "function"
);
}
ä½¿ç¨ locales
è¿ä¸ªç¤ºä¾å±ç¤ºäºä¸åå°åºæ°åæ ¼å¼çå·®å¼ã为äºè®¾ç½®ä½ çåºç¨ç¨åºçé¢ä¸ä½¿ç¨çè¯è¨æ ¼å¼ï¼è¯·ç¡®ä¿ä½¿ç¨ locales åæ°æå®äºä½¿ç¨çè¯è¨ï¼å¯è½è¿æä¸äºå¤ç¨è¯è¨ï¼ï¼
const number = 123456.789;
// å¾·å½ä½¿ç¨éå·ä½ä¸ºå°æ°åé符ï¼åä½å¨æä¸ºåä½
console.log(number.toLocaleString("de-DE"));
// â 123.456,789
// å¨å¤§å¤æ°é¿æä¼¯è¯å½å®¶ä½¿ç¨é¿æä¼¯è¯æ°å
console.log(number.toLocaleString("ar-EG"));
// â ١٢٣٤٥٦٫٧٨٩
// å°åº¦ä½¿ç¨åä½/æå
ï¼åä¸ï¼/å
è¥å°ï¼åä¸ï¼åé
console.log(number.toLocaleString("en-IN"));
// â 1,23,456.789
// nu æ©å±åæ®µè¦æ±ç¼å·ç³»ç»ï¼e.g. 䏿åè¿å¶
console.log(number.toLocaleString("zh-Hans-CN-u-nu-hanidec"));
// â ä¸äºä¸,åäºå
.ä¸å
«ä¹
// å½è¯·æ±ä¸æ¯æçè¯è¨æ¶ï¼ä¾å¦å·´åè¯ï¼å å
¥ä¸ä¸ªå¤ç¨è¯è¨ï¼æ¯å¦å°å°¼è¯
console.log(number.toLocaleString(["ban", "id"]));
// â 123.456,789
ä½¿ç¨ options
éè¿ toLocaleString è¿åçç»æå¯ä»¥éè¿ options åæ°è¿è¡å®å¶ï¼
const number = 123456.789;
// è¦æ±è´§å¸æ ¼å¼
console.log(
number.toLocaleString("de-DE", { style: "currency", currency: "EUR" }),
);
// â 123.456,79 â¬
// æ¥å
ä¸ä½¿ç¨å°æ°ä½
console.log(
number.toLocaleString("ja-JP", { style: "currency", currency: "JPY" }),
);
// â ï¿¥123,457
// éå¶ä¸ä½æææ°å
console.log(number.toLocaleString("en-IN", { maximumSignificantDigits: 3 }));
// â 1,23,000
// 使ç¨å¸¦é项ç主æºé»è®¤è¯è¨è¿è¡æ°åæ ¼å¼å
const num = 30000.65;
console.log(
num.toLocaleString(undefined, {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
}),
);
// â "30,000.65" è±è¯ä¸ºé»è®¤è¯è¨
// â "30.000,65" å¾·è¯ä¸ºé»è®¤è¯è¨
// â "30 000,65" æ³è¯ä¸ºé»è®¤è¯è¨
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-number.prototype.tolocalestring> |
| ECMAScript® 2027 Internationalization API Specification> # sup-number.prototype.tolocalestring> |