在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);
其他回答
我正在使用这个简单的方法
var input = 1000; //input any number
var len = input.toString().length;
for (i = 1; i < input; i++) {
console.log("MyNumber_" + ('000000000000000' + i).slice(-len));
}
一个简单的用例(填充毫秒从不> 999) 如果需要,您可以调整零的数量,或者使用更通用的方法。
/**
* @val integer
* @zeros padding
*/
function zeroFill(val, zeros)
{
var str = val.toString();
if (str.length >= zeros)
return str;
str = "000" + str;
return str.substring(str.length - zeros);
}
最新的方法要简单得多:
var number = 2
number.toLocaleString(undefined, {minimumIntegerDigits:2})
输出:“02”
Mnah……我还没有看到这个问题的“终极”答案,如果你面临同样的挑战,我必须节省你一些时间,遗憾的是JavaScript中没有内置的函数。
但是PHP中有一个很棒的函数,它在填充字符串以及单个字符或任意字符串的数字方面做得很好。经过一段时间的思考,我没有合适的JavaScript工具(主要用于零数字,通常用于调整字符串以适应固定长度)和过多的编码工作,我决定编写自己的函数。
它做了同样的事情(“几乎一样”;详细信息请继续阅读),梦想的PHP函数可以做到,但在舒适的客户端JavaScript:
function str_pad(input, pad_length, pad_string, pad_type) {
var input = input.toString();
var output = "";
if((input.length > pad_length) &&
(pad_type == 'STR_PAD_RIGHT')) {
var output = input.slice(0, pad_length);
}
else
if((input.length > pad_length) &&
(pad_type == 'STR_PAD_LEFT')) {
var output = input.slice(input.length -
pad_length,input.length);
}
else
if((input.length < pad_length) &&
(pad_type == 'STR_PAD_RIGHT')) {
var caracteresNecesarios = pad_length-input.length;
var rellenoEnteros = Math.floor(caracteresNecesarios/pad_string.length);
var rellenoParte = caracteresNecesarios%pad_string.length;
var output = input;
for(var i=0; i<rellenoEnteros; i++) {
var output = output + pad_string;
};
var output = output + pad_string.slice(0, rellenoParte);
}
else
if((input.length < pad_length) &&
(pad_type=='STR_PAD_LEFT')) {
var caracteresNecesarios = pad_length-input.length;
var rellenoEnteros = Math.floor(caracteresNecesarios/pad_string.length);
var rellenoParte = caracteresNecesarios%pad_string.length;
var output = "";
for(var i=0; i<rellenoEnteros; i++) {
var output = output + pad_string;
};
var output = output + pad_string.slice(0, rellenoParte);
var output = output + input;
}
else
if(input.length == pad_length) {
var output = input;
};
return output;
};
我的函数唯一没有做的是STR_PAD_BOTH行为,我可以用一些时间和一个更舒适的键盘添加它。 你可以调用函数并测试它;如果你不介意内部代码使用一两个西班牙语单词,我打赌你会喜欢它的……我觉得没什么大不了的。我没有为“水印”我的代码添加注释,这样你就可以在你的工作中无缝地使用它,我也没有压缩代码以增强可读性。 使用它并像这样测试它,并传播代码:
alert("str_pad('murcielago', 20, '123', 'STR_PAD_RIGHT')=" + str_pad('murcielago', 20, '123', 'STR_PAD_RIGHT') + '.');
我使用这个片段来获得一个五位数的表示:
(value+100000).toString().slice(-5) // "00123" with value=123