我想要一个这样的模式: - 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
。如何得到这个结果?
答案 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);