在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
当前回答
自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"
可变长度填充功能:
function addPaddingZeroes(value, nLength)
{
var sValue = value + ''; // Converts to string
if(sValue.length >= nLength)
return sValue;
else
{
for(var nZero = 0; nZero < nLength; nZero++)
sValue = "0" + sValue;
return (sValue).substring(nLength - sValue.length, nLength);
}
}
我经常使用这个结构来填充某个值n,已知是一个正的小数:
(offset + n + '').substr(1);
其中偏移量为10^^位。
例如,填充到5位数,其中n = 123:
(1e5 + 123 + '').substr(1); // => 00123
十六进制的版本稍微详细一些:
(0x100000 + 0x123).toString(16).substr(1); // => 00123
注1:我也喜欢@profitehlolz的解决方案,它是这个的字符串版本,使用slice()的漂亮的负索引特性。
我不敢相信这里有这么多复杂的答案……就用这个吧:
var zerofilled = ('0000'+n).slice(-4);
让n = 1 var zerofilled = ('0000' n).切片(4); 控制台日志(zerofilled)。
function pad(toPad, padChar, length){
return (String(toPad).length < length)
? new Array(length - String(toPad).length + 1).join(padChar) + String(toPad)
: toPad;
}
Pad (5,0,6) = 000005
Pad('10', 0,2) = 10 //如果没有必要,不要填充
pad('S', 'O', 2) = SO
…等。
干杯