在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
当前回答
使用递归:
function padZero(s, n) {
s = s.toString(); // In case someone passes a number
return s.length >= n ? s : padZero('0' + s, n);
}
其他回答
我对这个话题的一点贡献(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"
我知道,这是一个很脏的函数,但它很快,即使是负数也能工作;)
也许我太天真了,但我认为这在一行简单而有效的代码中就可以实现(对于正数):
padded = (value + Math.pow(10, total_length) + "").slice(1)
只要你保持你的长度根据你的值集(在任何零填充),这应该是可行的。
步骤如下:
10的幂与正确的0数相加[69+1000 = 1069] 转换为字符串+"" [1069 => "1069"] 对第一个1进行切片,这是第一个乘法的结果["1069" => "069"]
对于自然列表(文件,dirs…)是非常有用的。
function pad(toPad, padChar, length){
return (String(toPad).length < length)
? new Array(length - String(toPad).length + 1).join(padChar) + String(toPad)
: toPad;
}
Pad (5,0,6) = 000005
Pad('10', 0,2) = 10 //如果没有必要,不要填充
pad('S', 'O', 2) = SO
…等。
干杯
我不敢相信这里有这么多复杂的答案……就用这个吧:
var zerofilled = ('0000'+n).slice(-4);
让n = 1 var zerofilled = ('0000' n).切片(4); 控制台日志(zerofilled)。
这个方法不是更快,但它相当原生。
zeroPad = function (num, count) {
return [Math.pow(10, count - num.toString().length), num].join('').substr(1);
};