javascript - 使用js如何巧妙的用0补足指定位数?
大家讲道理
大家讲道理 2017-04-10 15:01:24
0
12
1470

例如:指定返回字符串长度是4,操作数是5,如何将这个5,变为'0005'返回


谢谢大家的回答!回答里有好几种思路,受益匪浅,再次感谢大家的回答,谢谢!

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(12)
巴扎黑
function foo(str){
    str ='00000'+str;
    return str.substring(str.length-5,str.length);
}
洪涛
javascript//给数字字符串补零,不支持负数
function padNumber(num, fill) {
    //改自:http://blog.csdn.net/aimingoo/article/details/4492592
    var len = ('' + num).length;
    return (Array(
        fill > len ? fill - len + 1 || 0 : 0
    ).join(0) + num);
}

曾经拜读过在js中做数字字符串补0 这篇文章,受益匪浅,这个是在月影提供的版本上改进强壮了一点点的实现。
前辈们的思考值得我们学习。

Peter_Zhu

不支持负数的话,可以这样:

    function zfill(num, size) {
    var s = "000000000" + num;
    return s.substr(s.length-size);
}
PHPzhong
javascriptfunction preZeroFill (num, size) {
    if (num >= Math.pow(10, size)) { //如果num本身位数不小于size位
        return num.toString();
    } else {
        var _str = Array(size + 1).join('0') + num;
        return _str.slice(_str.length - size);
    }
}
preZeroFill(5, 4);

此方法借鉴自captainblue的回答,并做优化,给赞请给captainblue.

Ty80

https://github.com/alexei/sprintf.js

Ty80
    function prefix(num, val) {
        return (new Array(num).join('0') + val).slice(-num);
    }
Peter_Zhu
    new Array(4).join('0').concat(5) 
PHPzhong
    function padLeft(number, size) {
        return number.toFixed(size - number.toString().length).replace('.', '').split('').reverse().join('');
    }
大家讲道理
javascriptif (!String.prototype.zfill) {
    String.prototype.zfill = function(len) {
        if (len == undefined || typeof len != 'number' || this.length >= len) {return this.toString()}
        return Array(len - this.length + 1).join('0') + this;
    }
}
大家讲道理
javascriptfunction prefix(size, num) {
    var sLen = ('' + num).length;
    if (sLen >= size) {
        return '' + num;
    }
    var preZero = (new Array(size)).join('0');

    return preZero.substring(0, size - sLen) + num;
}

参考了ls的答案。

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan