Kyl*_*ild 31

function pad_with_zeroes(number, length) {

    var my_string = '' + number;
    while (my_string.length < length) {
        my_string = '0' + my_string;
    }

    return my_string;

}
Run Code Online (Sandbox Code Playgroud)


Lif*_*ack 22

在您可以使用的所有现代浏览器中

numberStr.padStart(4, "0");
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

function zeroPad(num) {
  return num.toString().padStart(4, "0");
}

var numbers = [1310, 120, 10, 7];

numbers.forEach(
  function(num) {        
    var paddedNum = zeroPad(num);

    console.log(paddedNum);
  }
);
Run Code Online (Sandbox Code Playgroud)


小智 14

试试这些:

('0000' + number).slice(-4);
Run Code Online (Sandbox Code Playgroud)

或者

(number+'').padStart(4,'0');
Run Code Online (Sandbox Code Playgroud)


Nat*_*ate 9

这是另一种方式.来自我所做的事情,需要在页面加载上进行数千次.一次对一串零码进行硬编码是非常有效的CPU效率,并根据需要多次切换所需的数量.我真的很喜欢10方法的力量 - 这非常灵活.

无论如何,这和我想出的效率一样高效:

对于原始问题,请选择其中一个案例......

var number = 1310;
var number = 120;
var number = 10;
var number = 7;
Run Code Online (Sandbox Code Playgroud)

然后

// only needs to happen once 
var zeroString = "00000";

// one assignment gets the padded number
var paddedNum = zeroString.substring((number + "").length, 4) + bareNum;

//output
alert("The padded number string is: " + paddedNum);
Run Code Online (Sandbox Code Playgroud)

当然,您仍需要验证输入.因为这只能在以下条件下可靠地工作:

  • zeroString中的零数是desired_length + 1
  • 起始编号中的位数小于或等于所需长度

背景故事:

我有一个需要固定长度(14位)零填充数字的情况.我想看看我能做到多么基本.它在页面加载上运行了数万次,因此效率很重要.它不太可重复使用,而且有点不优雅.除了它非常简单.

对于期望的n位填充字符串,此方法需要一串(至少)n + 1个零.索引0是字符串中的第一个字符,不会被使用,所以实际上它可以是任何东西.

另请注意,string.substring()string.substr()不同!

var bareNum = 42 + '';  
var zeroString = "000000000000000";
var paddedNum = zeroString.substring(bareNumber.length, 14) + bareNum
Run Code Online (Sandbox Code Playgroud)

这会从匹配字符串长度的位置开始从zeroString中拉出零,并继续获得所需的长度为零的零.只要第三行中的"14"是一个比zeroString中的字符数更低的整数,它会工作.


Poi*_*nty 6

function pad(n, len) {
  return (new Array(len + 1).join('0') + n).slice(-len);
}
Run Code Online (Sandbox Code Playgroud)

可能不适用于旧的 IE 版本。

  • +1,从 IE 4.0 开始可以正常工作。一个更简单的方法,如果你不需要它是动态的,是`("0000" + n).slice(-4);` (2认同)

Myk*_*tak 5

//to: 0 - to left, 1 - to right
String.prototype.pad = function(_char, len, to) {
    if (!this || !_char || this.length >= len) {
        return this;
    }
    to = to || 0;

    var ret = this;

    var max = (len - this.length)/_char.length + 1;
    while (--max) {
        ret = (to) ? ret + _char : _char + ret;
    }

    return ret;
};
Run Code Online (Sandbox Code Playgroud)

用法:

someString.pad(neededChars, neededLength)
Run Code Online (Sandbox Code Playgroud)

例:

'332'.pad('0', 6); //'000332'
'332'.pad('0', 6, 1); //'332000'
Run Code Online (Sandbox Code Playgroud)