web-dev-qa-db-ja.com

Number.toLocaleString( "fa-IR")をオーバーライドして、ペルシア語の数字の桁区切り記号を変更します

ローカルフォーマットに基づいて数値を再フォーマットする必要があります。これを行うには、Number.toLocaleString("LOCAL")関数を使用します。イランでは、大多数の人々は_,_を数千の区切り文字として使用することを好みますが、Number.toLocaleString("fa-IR")は_٬_を使用します(技術的には、がtrueです)。

次のコードを使用して文字を置き換えることができますが、overrideNumber.toLocaleString("fa-IR")の機能を使用する方法はありますか?

_function formatNumber(number) {
  let string = number.toLocaleString('fa-IR'); // ۱۲٬۳۴۵٫۶۷۹
  number = number.replace(/\٬/g, ",‬");
  return string;
}

formatNumber(12345.6789); // the result: ۱۲,۳۴۵٫۶۷۹
_

PS私はここに同様のコードスニペットがたくさんあることを知っていますが、(可能であれば)組み込み関数をオーバーライドしたいと思います。

3
Elyas Hadizadeh

Numberのプロトタイプを変更してよければ、そうです。他のライブラリなどを混乱させる可能性があるため、組み込みクラスのプロトタイプを変更しないように警告されます。

とにかく鍛造:

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;
}
0
Matt Ellen