Maison >Java >javaDidacticiel >Comment puis-je trier les chaînes avec des nombres intégrés, en donnant la priorité à la comparaison lexicale puis numérique ?

Comment puis-je trier les chaînes avec des nombres intégrés, en donnant la priorité à la comparaison lexicale puis numérique ?

DDD
DDDoriginal
2024-12-16 13:28:10706parcourir

How Can I Sort Strings with Embedded Numbers, Prioritizing Lexical and then Numeric Comparison?

Tri des chaînes avec des nombres intégrés

Dans ce scénario, vous avez une exigence spécifique pour les comparaisons de chaînes, où la partie principale est comparée lexicalement, et si elles correspondent, les valeurs entières intégrées deviennent la base de comparaison. Pour y parvenir, compte tenu de la présence variable d'espaces autour des valeurs numériques, une approche personnalisée est proposée.

Algorithme Alphanum

Une solution recommandée consiste à utiliser l'algorithme "Alphanum " comme suggéré par le site Web mentionné dans la réponse. Cet algorithme fournit un comportement de tri cohérent qui correspond à la perception humaine.

Mise en œuvre

L'algorithme Alphanum fonctionne en comparant de manière itérative les caractères du début et de la fin des chaînes jusqu'à une inadéquation. est rencontré. Lorsqu'une section différente est trouvée, il extrait les nombres intégrés à l'aide d'expressions régulières. Si les chaînes contiennent des nombres convertibles, il effectue une comparaison numérique ; sinon, il effectue une comparaison lexicale sur la section extraite.

Implémentation du comparateur

Une implémentation du comparateur Java de l'algorithme Alphanum est disponible sur le lien fourni. En intégrant ce comparateur, vous pouvez trier les chaînes selon les spécifications souhaitées, en donnant la priorité aux comparaisons lexicales pour les parties non numériques et en tirant parti des comparaisons numériques pour les valeurs entières intégrées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn