2007年12月06日

[JavaScript]数値を3桁ごとに区切る

なんか見かけたのでちょっと作ってみた。
@ 〜 Bは他人様。最後に俺。
タイム測定の為に、メソッド名はちょっと改変させてもらってる。

@ 3桁ごとに区切る - PleasureDelayerDiary はてなブックマーク数


Number.prototype.split3_1 = function() {
    var r = ""; 
    var s = this.toString().split("").reverse();
    for(var i = 0; i < s.length; i++) {
        if(i % 3 == 0 && i != 0 && s[i] != "-") {
            r = s[i] + "," + r 
        } else {
            r = s[i] + r;
        }
    }   
    return r;
}

A iandeth. - javascriptで数値をカンマ区切り文字列に変換する関数メモ はてなブックマーク数


 
Number.prototype.split3_2 = function () {
    var to = String(this);
    var tmp = "";
    while (to != (tmp = to.replace(/^([+-]?\d+)(\d\d\d)/,"$1,$2"))){
        to = tmp;
    }
    return to;
}

B JavaScriptで数値を3桁ごとに区切る - 0x集積蔵 はてなブックマーク数


Number.prototype.split3_3 = function() {
	var m = (this < 0) ? -1 : 1;
	var str = String(this*m).split('.');
	var arr = String(str[0]).split(''), len = Math.ceil(arr.length/3), res = [];
	for (var i =0;i<len;++i) res.push(arr.splice(-3,3).join(''));
	return (m == -1 ? '-' : '') + res.reverse().join(',') + (str[1] ? '.' + str[1] : '');
};

後続の割りに洗練されていない俺バージョン


Number.prototype.split3_ore = function() {
  ('' + this).match(/(-?)([0-9]+)(\.[0-9]*)?/);
  var sp = [RegExp.$1, RegExp.$2, RegExp.$3];
  var x = Math.floor(sp[1].length / 3) * 3;
  var len = sp[1].length;
  return sp[0] + (sp[1].substr(0, len - x)) + (len - x == 0 ? '' : ',') +
         (sp[1].substr(len - x, x).match(/[0-9]{3}/g).join(',')) + sp[2];
}


タイム測定





A番速っっっ!!



posted by suVene at 04:31