数値のカンマ区切り

javascriptで数値をカンマ区切り文字列に変換する関数メモ


最近、正規表現を改めて勉強しなおしてるので、
別の方法で書き直してみた。
Numberを拡張する方法でやってみる。

Number.prototype.to_comma=function() {
  return this.toString().replace(/((^[+-])?(\d)+?)(?=(\d{3})+$)/g, "$1,");
}
  • 検証1

(111222333444).to_comma();
 ⇒ 111,222,333,444

  • 検証2

(-1234598765).to_comma();
 ⇒ -1,234,598,765

  • 検証3

(12345.678901).to_comma();
 ⇒ 12345.678,901

Jashにて

・・・小数点考慮できてない。
この対応はもう少し時間が必要かな。



追記
一応できたけど可読性最悪、、、性能も多分。

Number.prototype.to_comma=function() {
  var s = this.toString().split("\.");
  return s[0].replace(/((^[+-])?(\d)+?)(?=(\d{3})+$)/g, "$1,") + 
	 (s[1]? "." + s[1].replace(/(\d{3})(?=\d+)/g, "$1,") : "");
}
  • 検証1

(111222333444).to_comma();
 ⇒ 111,222,333,444

  • 検証2

(-1234598765).to_comma();
 ⇒ -1,234,598,765

  • 検証3

(-12345.678901).to_comma();
 ⇒ -12,345.678,901

まぁいけてるっぽいね。