在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
当前回答
我使用
Utilities.formatString("%04d", iThe_TWO_to_FOUR_DIGIT)
哪个前导有4个0
注:这需要谷歌的应用程序脚本实用程序:
https://developers.google.com/apps-script/reference/utilities/utilities#formatstringtemplate-args
其他回答
一个简单的递归函数来实现您的建议:
function padleft (YourNumber, OutputLength){
if (YourNumber.length >= OutputLength) {
return YourNumber;
} else {
return padleft("0" +YourNumber, OutputLength);
}
}
YourNumber是输入的数字。 OutputLength是首选的输出数字长度(剩余填充为0)。
如果您的输入数字长度小于所需的输出数字长度,此函数将在左侧添加0。
我用ECMAScript 6 (TypeScript)写了一些东西,也许有人可以使用它:
class Helper {
/**
* adds leading 0 and returns string if value is not minSize long,
* else returns value as string
*
* @param {string|number} value
* @param {number} minSize
* @returns {string}
*/
public static leadingNullString(value: string|number, minSize: number): string {
if (typeof value == "number") {
value = "" + value;
}
let outString: string = '';
let counter: number = minSize - value.length;
if (counter > 0) {
for (let i = 0; i < counter; i++) {
outString += '0';
}
}
return (outString + value);
}
}
帮手。leadingNullString (123 2);返回" 123 "
帮手。leadingNullString (5,2);返回“05”
Helper.leadingNullString(40岁,2);返回“40”
ecmaScript4 (JavaScript)编译如下:
var Helper = (function () {
function Helper() {
}
Helper.leadingNullString = function (value, minSize) {
if (typeof value == "number") {
value = "" + value;
}
var outString = '';
var counter = minSize - value.length;
if (counter > 0) {
for (var i = 0; i < counter; i++) {
outString += '0';
}
}
return (outString + value);
};
return Helper;
}());
一个简单的用例(填充毫秒从不> 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);
}
ES6让这一点变得相当微不足道:
function pad (num, length, countSign = true) {
num = num.toString()
let negative = num.startsWith('-')
let numLength = negative && !countSign ? num.length - 1 : num.length
if (numLength >= length) {
return num
} else if (negative) {
return '-' + '0'.repeat(length - numLength) + num.substr(1)
} else {
return '0'.repeat(length - numLength) + num
}
}
pad(42, 4) === '0042'
pad(12345, 4) === '12345'
pad(-123, 4) === '-100'
pad(-123, 4, false) === '-0100'
自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);