转载:https://cloud.tencent.com/developer/ask/32933/answer/44175
只是为了演示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); }