在JavaScript中将“1”转换为“0001”
可能重复:
是否有JavaScript函数可以填充string以达到确定的长度?
如何在不使用任何第三方库的情况下将JavaScript中的“1”转换为“0001”。 我使用spritf在php中完成了这个工作: $time = sprintf('%04.0f',$time_arr[$i]);
这是一个聪明的小动作(我想我以前见过):
var str = "" + 1 var pad = "0000" var ans = pad.substring(0, pad.length - str.length) + str
如果substring的第二个参数是负数,JavaScript比一些语言更宽容,所以它会“正确地溢出”(或根据查看的方式错误地):
就是说,用上面的:
- 1 – >“0001”
- 12345 – >“12345”
支持负数是作为一个练习;-)
快乐的编码。
只是为了演示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); }
String.prototype.padZero= function(len, c){ var s= this, c= c || '0'; while(s.length< len) s= c+ s; return s; }
尽pipe名字,你可以留下任何字符,包括一个空格。 我从来没有使用右侧填充,但这很容易。
我使用以下对象:
function Padder(len, pad) { if (len === undefined) { len = 1; } else if (pad === undefined) { pad = '0'; } var pads = ''; while (pads.length < len) { pads += pad; } this.pad = function (what) { var s = what.toString(); return pads.substring(0, pads.length - s.length) + s; }; }
有了它,你可以很容易地定义不同的“填充”:
var zero4 = new Padder(4); zero4.pad(12); // "0012" zero4.pad(12345); // "12345" zero4.pad("xx"); // "00xx" var x3 = new Padder(3, "x"); x3.pad(12); // "x12"
- jQuery绑定到Paste Event,如何获取粘贴的内容
- 是否有可能在JavaScript / JQuery中克隆html元素对象?
- 如何避免在PHP中回显字符65279? (这个问题也涉及到Javascript xmlhttp.responseText(ajax))
- 在JavaScript关联数组中dynamic创build键
- 如何编写一个期望在Jasmine中抛出Error的testing?
- 有没有离线的HTML CSS JS编辑器像jsfiddle,jsbin,codepen等?
- 如何使用JavaScript或jQuery读取图像的像素,当用户点击它?
- 执行以stringforms存储的JavaScript代码
- jQuery .val变化不会改变input值