我必须输出一个必须始终有3位数的日期编号。而不是 3 它必须写 003 ,而不是 12 ,它必须写 012 。如果大于 100 输出,则不进行格式化。 我想知道是否有一个我可以使用的正则表达式或一些快速的内联脚本,或者我必须创建一个应该这样做并返回结果的函数。谢谢!
答案 0 :(得分:20)
怎么样:
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);
}
答案 1 :(得分:3)
我在his blog找到了Samuel Mullen的优雅解决方案。我只是优化了zeroes
创建。
function lpad(value, padding) {
var zeroes = new Array(padding+1).join("0");
return (zeroes + value).slice(-padding);
}
用法:lpad(12, 3)
会产生"012"
答案 2 :(得分:1)
这是一个简单的函数,用零填充一个数字到一定的宽度:
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
}
(来自How can I pad a value with leading zeros?)
由于原始答案没有解释该功能如何运作,我将在这里做。
width
最初包含您想要的总长度,因此width - number_of_digits
是必需的填充字符数。
new Array(len + 1).join(str)
重复str
len
次
正则数字用于在包含小数点的数字的情况下添加额外的填充零,因为该点也包含在使用number_of_digits
number.toString().length
中
答案 3 :(得分:1)
答案 4 :(得分:1)
你可以这样做......
("00" + day).slice(-3)
它会在前面添加零,然后.slice()
将始终为您提供该字符串的最后3个值。
答案 5 :(得分:1)
我会写下面这个函数:
var pad = function(n, length) {
var str = "" + n;
if(str.length < length) str = new Array(length - str.length).join("0") + str;
return str;
};