文字と数字を含む文字列を並べ替えるコンパイラがありますが、私が探している方法でそれらを並べ替える正規表現を識別できないようです。整数を含む文字列をコンパレータで並べ替える
私はthis questionを私のコンパレータのリファレンスとして使用しました。
array={string-a01,string-a20,string-a100,string-b01,string-b20,string-b100,string-c01,string-c20,string-c100 etc.}
Collections.sort(array, new Comparator<String>(){
public int compare(String o1, String o2) {
return extractInt(o1) - extractInt(o2);
}
int extractInt(String s) {
String num = s.replaceAll("\\D", "");
return num.isEmpty() ? 0 : Integer.parseInt(num);
}
});
for (String element : array) {
System.out.println(element);
}
コンパレータを導入する前に出力されました:
は string-a01, string-a100, string-a20, string-b01, string-b100, string-b20, string-c01, string-c20, string-c100
このコードが生成する出力は次のとおりです。私はそれが生成したい出力がある
string-a01, string-b01, string-c01 string-a20, string-b20, string-c20 string-a100, string-b100, string-c100
:
string-a01, string-a20, string-a100, string-b01, string-b20, string-b100, string-c01, string-c20, string-c100
編集:説明のために編集されています。コンパレータが追加される前に配列が変更され、出力されました。
私が探していたすべてのことをinitalの質問が尋ねなかったので私は別の更新をしました。問題は、次のような注文です:b01、b100、b11、c01、c100、c11 ...配列は動的に生成され、元の配列で問題が起こらないことが分かった – Jon
@Jon、うん、私はそれを見ていたが、もう少し複雑だ。 –
@ジョン、私は答えを変更しました。これは機能しますか? –