Java talend中用于生成id的字母数字计数器
我试图在talend中找到一种生成字母数字计数器的方法,该计数器以以下方式创建数字:YYXXXXXXXX 在哪里Java talend中用于生成id的字母数字计数器,java,talend,talend-mdm,Java,Talend,Talend Mdm,我试图在talend中找到一种生成字母数字计数器的方法,该计数器以以下方式创建数字:YYXXXXXXXX 在哪里 YY是日历年 XXXXXXXX是字母数字计数器的id(每年从序列号00000001到zzzzzz) 每到新年,8个字符的ID应该被重置,并以00000001重新开始 序列应该看起来像 00000001 00000002 00000003 ... 99999999 A0000001 A0000002 A0000003 ... A9999999 B0000001 B0000002
- YY是日历年
- XXXXXXXX是字母数字计数器的id(每年从序列号00000001到zzzzzz)
00000001
00000002
00000003
...
99999999
A0000001
A0000002
A0000003
...
A9999999
B0000001
B0000002
B0000003
...
B9999999
Z0000001
Z0000002
Z0000003
...
Z9999999
...
ZA000001
ZA000002
ZA000003
...
ZA999999
......
ZZZZZZZZ
最后一个数字应该是zzzz。首先是1-9,然后是A-Z
一年内我们能容纳的最后一个id是20zzzz
如何做到这一点?基本上,它将一个数字(长)转换为基数为36的基数,用前面的零填充它以匹配格式,将当前年份的最后两位数合并,并将结果作为字符串返回
import java.time.LocalDateTime//用于从系统时钟获取当前年份
公共静态字符串codegen(长输入){
字符串LastTwoDigitOfYear=Integer.toString(LocalDateTime.now().getYear()).substring(2);//the“YY”
String radixOf36Base=Long.toString(输入,36).toUpperCase();
String radixOf36BasePadded=String.format(“%8s”,radixOf36Base)。替换(“”,'0');//替换“XXXXXXXX”
返回LastTwoDigitOfYear+RadixOf36基填充;//YYXXXXXXXX
}
大家好,欢迎来到stackoverflow。到目前为止你试过什么?你被什么卡住了?Stackoverflow不是“家庭作业/为我编写代码”服务。如果你事先表现出自己付出了一些努力,你就更有可能得到别人的帮助。这种描述看起来像一个基本的36位数系统。您所要做的就是生成一个接受int并以36为基数返回的函数。那么这只是一个连接年份的问题。你能不能举一个例子来说明内存不足的异常。有人能帮我写代码吗