在JavaScript中将'1'转换为'0001'

Mag*_*gie 174 javascript

可能重复:
是否有一个JavaScript函数可以填充字符串以达到确定的长度?

如何在JavaScript中将转换'1'转换为'0001'而不使用任何第三方库.我使用spritf在php中完成了这个:$time = sprintf('%04.0f',$time_arr[$i]);

小智 388

这是一个聪明的小技巧(我认为我以前见过这个):

var str = "" + 1
var pad = "0000"
var ans = pad.substring(0, pad.length - str.length) + str
Run Code Online (Sandbox Code Playgroud)

如果substring的第二个参数是负数,那么JavaScript比某些语言更宽容,因此它会"正确地溢出"(或者根据它的查看方式不正确):

也就是说,有了以上内容:

  • 1 - >"0001"
  • 12345 - >"12345"

支持负数留作练习;-)

快乐的编码.

  • 或者`var ans =('0000'+ str).substring(str.length);`. (80认同)
  • 或者只是`var ans = pad.substring(str.length)+ str` (11认同)
  • 或者`(pad + str).slice(-pad.length)`:) (10认同)
  • 或者只是`var ans = Array(4-str.length).join('0')+ str` (4认同)

Koo*_*Inc 93

只是为了演示javascript的灵活性:你可以使用oneliner

function padLeft(nr, n, str){
    return Array(n-String(nr).length+1).join(str||'0')+nr;
}
//or as a Number prototype method:
Number.prototype.padLeft = function (n,str){
    return Array(n-String(this).length+1).join(str||'0')+this;
}
//examples
console.log(padLeft(23,5));       //=> '00023'
console.log((23).padLeft(5));     //=> '00023'
console.log((23).padLeft(5,' ')); //=> '   23'
console.log(padLeft(23,5,'>>'));  //=> '>>>>>>23'
Run Code Online (Sandbox Code Playgroud)

如果你想将它用于负数:

Number.prototype.padLeft = function (n,str) {
    return (this < 0 ? '-' : '') + 
            Array(n-String(Math.abs(this)).length+1)
             .join(str||'0') + 
           (Math.abs(this));
}
console.log((-23).padLeft(5));     //=> '-00023'
Run Code Online (Sandbox Code Playgroud)

如果您不想使用,请选择Array:

number.prototype.padLeft = function (len,chr) {
 var self = Math.abs(this)+'';
 return (this<0 && '-' || '')+
         (String(Math.pow( 10, (len || 2)-self.length))
           .slice(1).replace(/0/g,chr||'0') + self);
}
Run Code Online (Sandbox Code Playgroud)


ken*_*bec 13

String.prototype.padZero= function(len, c){
    var s= this, c= c || '0';
    while(s.length< len) s= c+ s;
    return s;
}
Run Code Online (Sandbox Code Playgroud)

显示名称,你可以左键填充任何字符,包括空格.我从来没有使用右侧填充,但这很容易.