在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
当前回答
我对这个话题的一点贡献(https://gist.github.com/lucasferreira/a881606894dde5568029):
/* Autor: Lucas Ferreira - http://blog.lucasferreira.com | Usage: fz(9) or fz(100, 7) */
function fz(o, s) {
for(var s=Math.max((+s||2),(n=""+Math.abs(o)).length); n.length<s; (n="0"+n));
return (+o < 0 ? "-" : "") + n;
};
用法:
fz(9) & fz(9, 2) == "09"
fz(-3, 2) == "-03"
fz(101, 7) == "0000101"
我知道,这是一个很脏的函数,但它很快,即使是负数也能工作;)
其他回答
只是为了好玩,这里是我版本的pad函数:
function pad(num, len) {
return Array(len + 1 - num.toString().length).join('0') + num;
}
它也不会截断比填充长度更长的数字
我的贡献:
我假设你想要的总字符串长度包括'点'。如果不是,如果数字是浮点数,重写为增加一个额外的0仍然很简单。
padZeros = function (num, zeros) {
return (((num < 0) ? "-" : "") + Array(++zeros - String(Math.abs(num)).length).join("0") + Math.abs(num));
}
我不敢相信这里有这么多复杂的答案……就用这个吧:
var zerofilled = ('0000'+n).slice(-4);
让n = 1 var zerofilled = ('0000' n).切片(4); 控制台日志(zerofilled)。
还有另一个版本:
function zPad(s,n){
return (new Array(n+1).join('0')+s).substr(-Math.max(n,s.toString().length));
}
这一种不太本土,但可能是最快的…
zeroPad = function (num, count) {
var pad = (num + '').length - count;
while(--pad > -1) {
num = '0' + num;
}
return num;
};