可能是重复问题:
如何使用JavaScript创建填充为零的值?
我需要输出一个始终具有3位数字的日期。它必须写成003而不是3,必须写成012而不是12。如果大于100,则无需进行格式化输出。 我想知道是否有正则表达式或一些快速的内联脚本可以使用,或者我必须创建一个函数来执行并返回结果。谢谢!
可能是重复问题:
如何使用JavaScript创建填充为零的值?
我需要输出一个始终具有3位数字的日期。它必须写成003而不是3,必须写成012而不是12。如果大于100,则无需进行格式化输出。 我想知道是否有正则表达式或一些快速的内联脚本可以使用,或者我必须创建一个函数来执行并返回结果。谢谢!
这样怎么样:
zeroFilled = ('000' + x).substr(-3)
对于任意宽度:
zeroFilled = (new Array(width).join('0') + x).substr(-width)
根据评论,这似乎更准确:
lpad = function(s, width, char) {
return (s.length >= width) ? s : (new Array(width).join(char) + s).slice(-width);
}
我在Samuel Mullen的博客上找到了一个优雅的解决方案。我只是优化了zeroes
的创建。
function lpad(value, padding) {
var zeroes = new Array(padding+1).join("0");
return (zeroes + value).slice(-padding);
}
用法:lpad(12, 3)
的结果是 "012"
您可以这样做...
("00" + day).slice(-3)
.slice()
总是给你字符串的最后3个值。function zeroFill(number, width) {
width -= number.toString().length;
if(width > 0) {
return new Array(width + (/\./.test(number) ? 2 : 1)).join('0') + number;
}
return number + ""; // always return a string
}
(来自如何在数字前面填充零?)
由于原始答案没有解释函数的工作原理,我在这里进行解释。
width
最初包含您想要的总长度,因此 width - number_of_digits
是所需填充字符的数量。
new Array(len + 1).join(str)
重复 str
len
次。
正则表达式用于在数字包含小数点的情况下添加一个额外的填充零,因为小数点也包含在使用 number.toString().length
确定的 number_of_digits
中。
var pad = function(n, length) {
var str = "" + n;
if(str.length < length) str = new Array(length - str.length).join("0") + str;
return str;
};
.join("0")
,而且我认为你应该把它放在 str
之前。 - Phrogz