現在出回っている多くの人と同様のスレッドを作成したことをお詫びしますが、主にいくつかの方法についての洞察を得たいと思いました。
文字列のリストがあります(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文字はありません次に、最後の2つのalphacharサブセットの数値。