Maison >développement back-end >C++ >Comment puis-je implémenter l'ordre de tri naturel pour les noms de fichiers en C #?

Comment puis-je implémenter l'ordre de tri naturel pour les noms de fichiers en C #?

Barbara Streisand
Barbara Streisandoriginal
2025-02-02 16:21:10492parcourir

How Can I Implement Natural Sort Order for File Names in C#?

c # réalisez le tri naturel

Lors du tri du nom de fichier en C #, il est généralement nécessaire d'utiliser des algorithmes de tri naturels au lieu du tri par défaut du dictionnaire. Cela peut garantir que le nombre est trié en numérique et que le nombre de lettres est trié dans un ordre approprié.

Une façon d'atteindre le tri naturel est d'utiliser la fonction Windows intégrée

. Cette fonction permet de comparer l'ordre logique de la chaîne (y compris le nombre de nombres en tant que valeur) et la chaîne triée.

StrCmpLogicalW

dllimport

StrCmpLogicalW Vous pouvez utiliser pour accéder à Fonction:

DllImport Utilisez l'implémentation d'IComparer StrCmpLogicalW

<code class="language-csharp">[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);</code>
Afin d'intégrer cette fonction dans votre tri de tableau

, vous pouvez implémenter une classe personnalisée, comme indiqué ci-dessous:

Exemple d'utilisation FileInfo IComparer

Pour utiliser ce comparateur personnalisé, vous pouvez trier le tableau
<code class="language-csharp">public sealed class NaturalFileInfoNameComparer : IComparer<FileInfo>
{
    public int Compare(FileInfo x, FileInfo y)
    {
        return StrCmpLogicalW(x.Name, y.Name);
    }
}</code>
comme suit:

Cela triera les tableaux

en fonction de l'ordre naturel du nom du fichier (en même temps en considérant la séquence de numéro et de lettre de la lettre).

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