在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
当前回答
简单的方法。您可以为pad添加字符串乘法并将其转换为函数。
var pad = "000000";
var n = '5';
var result = (pad+n).slice(-pad.length);
作为一个函数,
function paddy(num, padlen, padchar) {
var pad_char = typeof padchar !== 'undefined' ? padchar : '0';
var pad = new Array(1 + padlen).join(pad_char);
return (pad + num).slice(-pad.length);
}
var fu = paddy(14, 5); // 00014
var bar = paddy(2, 4, '#'); // ###2
其他回答
这一种不太本土,但可能是最快的…
zeroPad = function (num, count) {
var pad = (num + '').length - count;
while(--pad > -1) {
num = '0' + num;
}
return num;
};
最新的方法要简单得多:
var number = 2
number.toLocaleString(undefined, {minimumIntegerDigits:2})
输出:“02”
我没有看到任何人指出,当你使用String.prototype.substr()与负数时,它从右边计数。
OP问题的一个线性解决方案,即数字5的6位零表示,是:
console.log((“00000000” + 5).substr(-6));
概括起来,我们会得到:
函数pad(num, len) {return ("00000000" + num).substr(-len)}; console.log(垫(5、6)); console.log(垫(45岁,6)); console.log (pad (345 6)); console.log (pad (2345 6)); console.log (pad (12345 6));
我真的不知道为什么,但没有人用最明显的方式去做。这是我的实现。
功能:
/** Pad a number with 0 on the left */
function zeroPad(number, digits) {
var num = number+"";
while(num.length < digits){
num='0'+num;
}
return num;
}
原型:
Number.prototype.zeroPad=function(digits){
var num=this+"";
while(num.length < digits){
num='0'+num;
}
return(num);
};
很简单,我看不出还有什么比这更简单的了。出于某种原因,我在这里已经看到很多次了,人们只是试图不惜一切代价避免“For”和“while”循环。使用regex可能会为这样一个微不足道的8位数填充花费更多的周期。
我们的测试是假的,因为我的有个错别字。
zeroPad = function (num, count) {
return ((num / Math.pow(10, count)) + '').substr(2);
};
Paul的是最快的,但我认为.substr比.slice快,即使它多了一个字符;)