在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"

我知道,这是一个很脏的函数,但它很快,即使是负数也能工作;)

其他回答

我使用

Utilities.formatString("%04d", iThe_TWO_to_FOUR_DIGIT) 

哪个前导有4个0

注:这需要谷歌的应用程序脚本实用程序:

https://developers.google.com/apps-script/reference/utilities/utilities#formatstringtemplate-args

exports.pad = (num, length) => "0".repeat(length - num.toString().length) + num;

现代浏览器现在支持padStart,你现在可以简单地做:

string.padStart(maxLength, "0");

例子:

字符串= "14"; maxLength = 5;// maxLength是最大字符串长度,而不是max #填充 Res =字符串。padStart(最大长度,“0”); console.log (res);//打印"00014" 人数= 14; maxLength = 5;// maxLength是最大字符串长度,而不是max #填充 res = number.toString()。padStart(最大长度,“0”); console.log (res);//打印"00014"

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零领先”参考考虑 浏览量和回答量都很高。

这里有一个两行函数中的数组解。它还检查前导零是否小于数字字符串的长度。

function pad(num, z) {
    if (z < (num = num + '').length) return num;
    return Array(++z - num.length).join('0') + num;
}