我如何给一个号码加前缀和加零?

How can I prefix and zeropad a number?

本文关键字:加前缀 号码 一个      更新时间:2023-09-26

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

下面的例子适用于最多6位的recordnumber。根据recordnumber

的值输出'GT-000001', 'GT-000012'或'GT-123456'
var pattern = 'GT-';
var recordnumber = 1; // This value i get dynamically.
var result = pattern + ('00000' + recordnumber).slice(-6);
console.log(result);

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

var init = 00000;

注意0不在引号中。这实际上相当于:

var init = 0;

所以当你把它放入字符串时,你只得到一个0

如果需要五个0,则需要使用字符串:

var init = "00000";

如果你想零填空,一般来说,Matt发现的这个问题和答案可能会有帮助。

但是简短的版本:

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;

你的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);