首页  >  问答  >  正文

javascript - 使用js如何巧妙的用0补足指定位数?

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


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

大家讲道理大家讲道理2750 天前1407

全部回复(12)我来回复

  • 巴扎黑

    巴扎黑2017-04-10 15:03:24

    function foo(str){
        str ='00000'+str;
        return str.substring(str.length-5,str.length);
    }
    

    回复
    0
  • PHP中文网

    PHP中文网2017-04-10 15:03:24

    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 这篇文章,受益匪浅,这个是在月影提供的版本上改进强壮了一点点的实现。
    前辈们的思考值得我们学习。

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-10 15:03:24

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

        function zfill(num, size) {
        var s = "000000000" + num;
        return s.substr(s.length-size);
    }
    

    回复
    0
  • PHPz

    PHPz2017-04-10 15:03:24

    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.

    回复
    0
  • PHP中文网

    PHP中文网2017-04-10 15:03:24

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

    回复
    0
  • PHP中文网

    PHP中文网2017-04-10 15:03:24

        function prefix(num, val) {
            return (new Array(num).join('0') + val).slice(-num);
        }
    

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-10 15:03:24

        new Array(4).join('0').concat(5) 
    

    回复
    0
  • PHPz

    PHPz2017-04-10 15:03:24

        function padLeft(number, size) {
            return number.toFixed(size - number.toString().length).replace('.', '').split('').reverse().join('');
        }
    

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-10 15:03:24

    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;
        }
    }
    

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-10 15:03:24

    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的答案。

    回复
    0
  • 取消回复