1

我正在尝试在 talend 中找到一种方法来生成一个字母数字计数器,该计数器以下列方式创建数字:YYXXXXXXXXX

在哪里

  • YY 是日历年
  • XXXXXXXX 是 id,它是字母数字计数器(每年从 00000001 到 ZZZZZZZZ 的起始序列号)

每年新的一年,8个字符的ID应该被重置并从00000001重新开始

序列应该看起来像

00000001
00000002
00000003
...
99999999

A0000001
A0000002
A0000003
...
A9999999

B0000001
B0000002
B0000003
...
B9999999

Z0000001
Z0000002
Z0000003
...
Z9999999
...

ZA000001
ZA000002
ZA000003
...
ZA999999

......
ZZZZZZZZ

最后一个数字应该是 ZZZZZZZZ。所以它会先是 1-9,然后是 AZ。

而一年中我们能容纳的最后一个id是20ZZZZZZZZ

这个怎么做?

4

1 回答 1

1

基本上它将数字(长)转换为以 36 为基数的基数,用前面的零填充以匹配格式,连接当前年份的最后两位数字并将结果作为字符串返回。

import java.time.LocalDateTime; //for getting the current year from system clock
public static String codegen(long input) {
    String lastTwoDigitsOfYear = Integer.toString(LocalDateTime.now().getYear()).substring(2); // the "YY"
    String radixOf36Base = Long.toString(input, 36).toUpperCase();
    String radixOf36BasePadded = String.format("%8s", radixOf36Base).replace(' ', '0'); //the "XXXXXXXX"
    return lastTwoDigitsOfYear + radixOf36BasePadded; //YYXXXXXXXX
    }
于 2020-11-03T16:21:24.450 回答