从特定输入递增字母

时间:2020-02-14 09:29:06

标签: javascript typescript increment

我是JavaScript新手。这是我的任务

我想生成一个以'A'开头并以递增方式编号的序列号。 示例:A000001,A000002,...,A000010等。 我想根据输入的当前年份生成此序列号。 范例: 如果当前年份是2020,则A000001,A000002,...,A000010等 如果当前年份为2021,则B000001,B000002,...,B000010等 如果当前年份为2046,则应类似于AA000001,AA000002,...,AA000010等。因为有26个字母,所以应该从AA开始。 2047年-AB,2048年-AC等使用相同的方法。

function colName(n) {
    var ordA = 'A'.charCodeAt(0);
    var ordZ = 'Z'.charCodeAt(0);
    var len = ordZ - ordA + 1;
    var year = 2020;

    var s = "";
    while(n >= 0) {
        s = String.fromCharCode(n % len + ordA) + s;
        n = Math.floor(n / len) - 1;
    }
    return s;
}

在这里,我有一个代码,它将以A,B,C,.... Z,AA的方式生成字母。但是,当我调用函数colName(n)时,应将'n'的值从0开始,以'A'开头。我想把这个值作为我的当前年份。如果我给n值2020,那么它应该显示'A'。

我被困在这里,却不了解如何执行此操作以及如何为此添加增量编号。 Here I am giving an image of my concept

谢谢。

1 个答案:

答案 0 :(得分:0)

您需要在2020之前减去n,以使其为起点(将其视为偏移量)。 同样,由于2020 = A,所以2027将是H而不是AA,并且从那里开始的26个字符将是Z。

function colName(n) {
    var ordA = 'A'.charCodeAt(0);
    var ordZ = 'Z'.charCodeAt(0);
    var len = ordZ - ordA + 1;
		n -= 2020;

    var s = "";
    while(n >= 0) {
        s = String.fromCharCode(n % len + ordA) + s;
        n = Math.floor(n / len) - 1;
    }
    return s;
}
document.write(colName(2020));

相关问题