J'ai ajouté une réponse à cette question ici: Sorting List<String>
in C# qui appelle un ordre de tri naturel, un qui gère les nombres incorporés. Ma mise en œuvre, cependant, est naïve, et au lieu de tous les messages sur la façon dont les applications ne gèrent pas Unicode correctement en supposant des choses (test de Turquie quelqu'un?), Je pensais que je demanderais de l'aide pour écrire un meilleure mise en œuvre. Ou, s'il existe une méthode intégrée de .NET, s'il vous plaît dites-moi :)Ecrire un meilleur tri naturel (que le mien)
Mon implémentation pour la réponse dans cette question passe juste par les chaînes, en comparant caractère par caractère, jusqu'à ce qu'il rencontre un chiffre dans les deux. Ensuite, il extrait les chiffres consécutifs des deux chaînes, ce qui peut entraîner des longueurs variables, des tampons les plus courts avec les zéros de tête, puis les compare.
Cependant, il y a des problèmes avec cela. Par exemple, que se passe-t-il si vous avez dans la chaîne x deux points de code qui forment ensemble le caractère È, mais dans l'autre chaîne vous avez un seul code, celui qui est ce caractère.
Mon algorithme échouerait sur ceux-ci, car il traiterait le codepoint diacritique comme un seul caractère, et le comparerait au È de l'autre chaîne.
Quelqu'un peut-il me guider vers la façon de gérer correctement? Je veux un support pour spécifier un objet CultureInfo
pour gérer des problèmes de langage, comme comparer "ss" avec "ß" en Allemagne, et des choses similaires.
Je pense que j'ai besoin d'obtenir mon code pour énumérer les "caractères réels" (je ne connais pas le terme réel ici) au lieu des points de code individuels.
Quelle est la bonne approche?
En outre, si « naturel » signifie « l'homme moyen attendent de travailler », je voudrais ajouter les choses suivantes à méditer:
- Qu'en est-dates et heures?
- Qu'en est-il des valeurs à virgule flottante?
- Existe-t-il d'autres séquences considérées comme «naturelles»?
- Jusqu'où cela devrait-il être étiré? (Am Stram Gram)
Salut hans ... encore une fois comme toujours ... réponse géniale ... Juste curieux ... comment avez-vous appris à connaître la dll à P/Invoke dans ?? – Dinesh
Il est documenté dans l'article MSDN pour la fonction, en bas. –
A trouvé ... merci – Dinesh