我怎样才能为数字添加前缀和zeropad?

时间:2014-06-02 12:02:02

标签: javascript

我想要一个这样的模式: - GT-000001。插入新记录时,此模式会增加。

所以我从我的DB中得到这样的值:

var pattern = 'GT-';
var init = 00000;
var recordnumber = 1; // This value i get dynamically.

var result = pattern + init + recodnumber;

但我得result = GT-01。我希望结果为GT-000001。如何得到这个结果?

3 个答案:

答案 0 :(得分:3)

你得到这个结果的原因是你有

var init = 00000;

请注意,零不在引号中。这实际上与:

相同
var init = 0;

所以当你把它放在字符串中时,你只得到一个零。

如果你想要五个零,你需要使用一个字符串:

var init = "00000";

如果您尝试使用零填充,一般来说,Matt发现的this question and its answers可能会有所帮助。

但是短版本:

var pattern = 'GT-';
var init = "000000"; // Note there are six of these, not five
var recordnumber = 1; // This value i get dynamically.

var result = String(recordnumber);
result = pattern + init.substring(result.length) + result;

答案 1 :(得分:3)

以下示例适用于最多6位数的记录编号。输出GT-000001',' GT-000012'或' GT-123456'基于recordnumber的值

var pattern = 'GT-';
var recordnumber = 1; // This value i get dynamically.

var result = pattern + ('00000' + recordnumber).slice(-6);
console.log(result);

答案 2 :(得分:2)

您的init是数字类型,在分配时它已被截断为0。 您需要手动添加前导零:

function leadzeros(n, size) {
    var s = n+"";
    while (s.length < size) s = "0" + s;
    return s;
}

var pattern = 'GT';
//var init = 00000; // <- here is 'init' is 0 already, so you can drop it
var recordnumber = 1; // This value i get dynamically.

var result = pattern + leadzeros(recodnumber, 5);