データベースのフィールドに「論理的に」並べ替えて格納する必要がある大文字と数字の文字列があります。データベースへの更新/変更/照会の部分を把握しました。この文字列を論理的にソートするのに苦労しています。
これでうまく説明できるといいのですが。
この一連の文字列を考えると、AB1 AB2 AB3 A11 AB10
これらをアルファソートする必要があります
A11 AB1 AB2 AB3 AB10
これを達成するには、文字列を爆発させる必要があると思います。現在アルファソートを試みているため、A11 AB1 AB10 AB2 AB3 が生成されます。
編集:他のプログラムでソートできるように、展開された文字列と展開されていない文字列を保存できる必要があります。
アルファをソートするために、それらを分割して保存する必要があると私が考える方法は次のとおりです
A11 - A 11
AB1 - AB 1
AB2 - AB 2
AB3 - AB 3
AB10 - AB 10
いくつかの定数があります。文字列は 5 ポジション以下になります。大文字と数字のみが含まれます。
これが私のコードで得た限りです。ライターはブロックするので、助けを求めています。文字で始まるかどうかを確認し、連続するすべての文字を見つけて左に移動し、数字に取り組み、連続する数字をすべて見つけて右揃えにする必要があると思います。「A1B1」のようなものがどのように機能するかはわかりません...
for(int ii = 0;ii < sectionString.length() && ii< SECTIONSPACES;ii++){
System.out.print(" Was previous a number? " + isPreviousANumber + "\n");
try{
String tmpString = sectionString.substring(ii,ii + 1 );
int positionInCharArray = Integer.parseInt(tmpString);
System.out.printf(" Position " + ii + " is number " + positionInCharArray + "\n");
isPreviousANumber = true;
}catch(Exception e){
System.out.printf(" Position " + ii + " number is not a number " + sectionString.substring(ii,ii) + "\n");
isPreviousANumber = false;
}
}