覆盖 Number.toLocaleString("fa-IR") 并更改波斯数字的千位分隔符
Override Number.toLocaleString("fa-IR") and change its thousands separator character for Persian numbers
我需要根据区域设置格式重新格式化数值,为此我使用了 Number.toLocaleString("LOCAL")
函数。在伊朗,大多数人更喜欢使用 ,
作为千位分隔符,但 Number.toLocaleString("fa-IR")
使用 ٬
(技术上是正确的)。
尽管您可以使用以下代码替换字符,但是有什么方法可以覆盖 Number.toLocaleString("fa-IR")
的功能吗?
function formatNumber(number) {
let string = number.toLocaleString('fa-IR'); // ۱۲٬۳۴۵٫۶۷۹
number = number.replace(/\٬/g, ",");
return string;
}
formatNumber(12345.6789); // the result: ۱۲,۳۴۵٫۶۷۹
PS:我知道那里有很多类似的代码片段,但我想覆盖内置函数(如果可能的话)。
如果您愿意更改 Number
的原型,那么可以。经常警告不要更改内置 class 的原型,因为这可能会与其他库等混淆。
砥砺前行:
const old = Number.prototype.toLocaleString;
Number.prototype.toLocaleString = function(locale)
{
let result = old.call(this, locale);
if(locale === 'fa-IR')
{
result = result.replace(/\٬/g, ",");
}
return result;
}
我需要根据区域设置格式重新格式化数值,为此我使用了 Number.toLocaleString("LOCAL")
函数。在伊朗,大多数人更喜欢使用 ,
作为千位分隔符,但 Number.toLocaleString("fa-IR")
使用 ٬
(技术上是正确的)。
尽管您可以使用以下代码替换字符,但是有什么方法可以覆盖 Number.toLocaleString("fa-IR")
的功能吗?
function formatNumber(number) {
let string = number.toLocaleString('fa-IR'); // ۱۲٬۳۴۵٫۶۷۹
number = number.replace(/\٬/g, ",");
return string;
}
formatNumber(12345.6789); // the result: ۱۲,۳۴۵٫۶۷۹
PS:我知道那里有很多类似的代码片段,但我想覆盖内置函数(如果可能的话)。
如果您愿意更改 Number
的原型,那么可以。经常警告不要更改内置 class 的原型,因为这可能会与其他库等混淆。
砥砺前行:
const old = Number.prototype.toLocaleString;
Number.prototype.toLocaleString = function(locale)
{
let result = old.call(this, locale);
if(locale === 'fa-IR')
{
result = result.replace(/\٬/g, ",");
}
return result;
}