3 回答

TA贡献1830条经验 获得超3个赞
这是一个聪明的小技巧(我认为我以前见过这个):
var str = "" + 1var pad = "0000"var ans = pad.substring(0, pad.length - str.length) + str
如果substring的第二个参数是负数,那么JavaScript比某些语言更宽容,因此它会“正确地溢出”(或者根据它的查看方式不正确):
也就是说,有了以上内容:
1 - >“0001”
12345 - >“12345”
支持负数留作练习;-)
快乐的编码。

TA贡献1811条经验 获得超5个赞
只是为了演示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'
如果你想将它用于负数:
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'
如果您不想使用,请选择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);
}

TA贡献1788条经验 获得超4个赞
String.prototype.padZero= function(len, c){ var s= this, c= c || '0'; while(s.length< len) s= c+ s; return s;}
显示名称,你可以左键填充任何字符,包括空格。我从来没有使用右侧填充,但这很容易。
添加回答
举报