J'ai besoin d'écrire une classe Java Comparator qui compare des chaînes de caractères, mais avec une particularité. Si les deux chaînes de caractères qu'elle compare sont identiques au début et à la fin de la chaîne, et que la partie centrale qui diffère est un nombre entier, alors elle compare sur la base des valeurs numériques de ces nombres entiers. Par exemple, je veux que les chaînes de caractères suivantes se retrouvent dans l'ordre où elles sont affichées :
- aaa
- bbb 3 ccc
- bbb 12 ccc
- ccc 11
- ddd
- eee 3 ddd jpeg2000 eee
- eee 12 ddd jpeg2000 eee
Comme vous pouvez le voir, il peut y avoir d'autres nombres entiers dans la chaîne, et je ne peux donc pas utiliser des expressions régulières pour extraire n'importe quel nombre entier. Je pense simplement parcourir les chaînes depuis le début jusqu'à ce que je trouve un bit qui ne correspond pas, puis parcourir depuis la fin jusqu'à ce que je trouve un bit qui ne correspond pas, puis comparer le bit du milieu à l'expression régulière "[0-9]+", et s'il y a comparaison, faire une comparaison numérique, sinon faire une comparaison lexicale.
Y a-t-il un meilleur moyen ?
Mise à jour Je ne pense pas pouvoir garantir que les autres chiffres de la chaîne, ceux qui peuvent correspondre, n'ont pas d'espaces autour d'eux, ou que ceux qui diffèrent ont des espaces.