在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
当前回答
这是我用来填充7个字符的数字。
("0000000" + number).slice(-7)
这种方法可能对大多数人来说已经足够了。
编辑:如果你想让它更通用,你可以这样做:
("0".repeat(padding) + number).slice(-padding)
编辑2:注意,自ES2017以来,你可以使用String.prototype.padStart:
number.toString().padStart(padding, "0")
其他回答
我在这个表单中没有看到任何答案所以这里是我的正则表达式和字符串操作
(也适用于负数和小数)
代码:
function fillZeroes(n = 0, m = 1) {
const p = Math.max(1, m);
return String(n).replace(/\d+/, x => '0'.repeat(Math.max(p - x.length, 0)) + x);
}
输出:
console.log(fillZeroes(6, 2)) // >> '06'
console.log(fillZeroes(1.35, 2)) // >> '01.35'
console.log(fillZeroes(-16, 3)) // >> '-016'
console.log(fillZeroes(-1.456, 3)) // >> '-001.456'
console.log(fillZeroes(-456.53453, 6)) // >> '-000456.53453'
console.log(fillZeroes('Agent 7', 3)) // >> 'Agent 007'
这一种不太本土,但可能是最快的…
zeroPad = function (num, count) {
var pad = (num + '').length - count;
while(--pad > -1) {
num = '0' + num;
}
return num;
};
我对这个话题的一点贡献(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"
我知道,这是一个很脏的函数,但它很快,即使是负数也能工作;)
这里有一个我认为很酷的小技巧:
(2/10000).toString().split(".")[1]
"0002"
(52/10000).toString().split(".")[1]
"0052"
js是一个完整的开源JavaScript sprintf实现 对于浏览器和node.js。 它的原型很简单: 字符串sprintf(字符串格式,[mixed arg1 [, mixed arg2[,…]]])
我想推荐Alexandru meurratisteanu的sprintf模块,整个解决方案看起来就像这样:
var sprintf = require('sprintf');
var zeroFilled = sprintf('%06d', 5);
console.log(zeroFilled); // 000005
注:我是在6年后回答这个问题,但似乎这个 问题成为“javascript零领先”参考考虑 浏览量和回答量都很高。