在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
当前回答
这是我想出的一个快速函数。如果有人有更简单的方法,欢迎分享!
function zerofill(number, length) {
// Setup
var result = number.toString();
var pad = length - result.length;
while(pad > 0) {
result = '0' + result;
pad--;
}
return result;
}
其他回答
我经常使用这个结构来填充某个值n,已知是一个正的小数:
(offset + n + '').substr(1);
其中偏移量为10^^位。
例如,填充到5位数,其中n = 123:
(1e5 + 123 + '').substr(1); // => 00123
十六进制的版本稍微详细一些:
(0x100000 + 0x123).toString(16).substr(1); // => 00123
注1:我也喜欢@profitehlolz的解决方案,它是这个的字符串版本,使用slice()的漂亮的负索引特性。
自ECMAScript 2017以来,我们有了padStart:
Const padding =(。1 +“”)。padStart(“0”); console.log(“- ${垫}”);
在ECMAScript 2017之前
toLocaleString:
为 n=-0.1; var res = n.toLocaleString('en', {minimumIntegerDigits:4,minimumFractionDigits:2,useGrouping:false}); console.log(res);
使用ES6+ JavaScript:
你可以用下面的函数来“零填充一个数字”:
/**
* @param number The number
* @param minLength Minimal length for your string with leading zeroes
* @return Your formatted string
*/
function zerofill(nb, minLength) {
// Convert your number to string.
let nb2Str = nb.toString()
// Guess the number of zeroes you will have to write.
let nbZeroes = Math.max(0, minLength - nb2Str.length)
// Compute your result.
return `${ '0'.repeat(nbZeroes) }${ nb2Str }`
}
console.log(zerofill(5, 6)) // Displays "000005"
ES2017 +:
/**
* @param number The number
* @param minLength Minimal length for your string with leading zeroes
* @return Your formatted string
*/
const zerofill = (nb, minLength) => nb.toString().padStart(minLength, '0')
console.log(zerofill(5, 6)) // Displays "000005"
也许我太天真了,但我认为这在一行简单而有效的代码中就可以实现(对于正数):
padded = (value + Math.pow(10, total_length) + "").slice(1)
只要你保持你的长度根据你的值集(在任何零填充),这应该是可行的。
步骤如下:
10的幂与正确的0数相加[69+1000 = 1069] 转换为字符串+"" [1069 => "1069"] 对第一个1进行切片,这是第一个乘法的结果["1069" => "069"]
对于自然列表(文件,dirs…)是非常有用的。
我使用这个片段来获得一个五位数的表示:
(value+100000).toString().slice(-5) // "00123" with value=123