我很抱歉为现在许多人创建了一个类似的线程,但我主要还是想了解一些方法。
我有一个字符串列表(可能只有 1 个或超过 1000 个)格式 = XXX-XXXXX-XX 其中每个都是字母数字
我正在尝试生成一个唯一的字符串(当前长度为 18,但可能会更长,以确保不会最大化文件长度或路径长度),如果我有相同的列表,我可以重现该字符串。顺序无关紧要;虽然我可能会感兴趣,如果它也更容易限制订单。
我当前的 Java 代码如下(今天失败了,因此我在这里):
public String createOutputFileName(ArrayList alInput, EnumFPFunction efpf, boolean pHeaders) {
/* create file name based on input list */
String sFileName = "";
long partNum = 0;
for (String sGPN : alInput) {
sGPN = sGPN.replaceAll("-", ""); //remove dashes
partNum += Long.parseLong(sGPN, 36); //(base 36)
}
sFileName = Long.toString(partNum);
if (sFileName.length() > 19) {
sFileName.substring(0, 18); //Max length of 19
}
return alInput;
}
所以显然只是添加它们并没有那么好我发现(也认为我应该取最后 18 位而不是前 18 位)
有什么好的方法(可能与CRC相关)可以工作吗?
为了帮助我创建密钥:前 3 个字符几乎总是数字,并且可能有很多重复(在 100 个中,可能只有 10 个不同的起始数字)这些字符是不允许的 - I,O 永远不会有一个字符然后是最后两个 alphachar 子集中的数字。