在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
当前回答
这里有一个我认为很酷的小技巧:
(2/10000).toString().split(".")[1]
"0002"
(52/10000).toString().split(".")[1]
"0052"
其他回答
我的贡献:
我假设你想要的总字符串长度包括'点'。如果不是,如果数字是浮点数,重写为增加一个额外的0仍然很简单。
padZeros = function (num, zeros) {
return (((num < 0) ? "-" : "") + Array(++zeros - String(Math.abs(num)).length).join("0") + Math.abs(num));
}
这是我写的一个angular提供程序,它利用了@profitehlolz的答案,但使用了内存,这样常用的pad长度-pad字符组合就不会不必要地调用数组构建连接:
angular.module('stringUtilities', [])
.service('stringFunctions', [function() {
this.padMemo={ };
this.padLeft=function(inputString,padSize,padCharacter) {
var memoKey=padSize+""+padCharacter;
if(!this.padMemo[memoKey]) {
this.padMemo[memoKey]= new Array(1 + padSize).join(padCharacter);
}
var pad=this.padMemo[memoKey];
return (pad + inputString).slice(-pad.length);
};
}]);
不要白费力气;使用下划线字符串:
js小提琴
var numToPad = '5';
alert(_.str.pad(numToPad, 6, '0')); // Yields: '000005'
这是我用来填充7个字符的数字。
("0000000" + number).slice(-7)
这种方法可能对大多数人来说已经足够了。
编辑:如果你想让它更通用,你可以这样做:
("0".repeat(padding) + number).slice(-padding)
编辑2:注意,自ES2017以来,你可以使用String.prototype.padStart:
number.toString().padStart(padding, "0")
这个方法不是更快,但它相当原生。
zeroPad = function (num, count) {
return [Math.pow(10, count - num.toString().length), num].join('').substr(1);
};