Heim >Backend-Entwicklung >C++ >Wie kann ich natürliche Sortierreihenfolge für Dateinamen in C#implementieren?

Wie kann ich natürliche Sortierreihenfolge für Dateinamen in C#implementieren?

Barbara Streisand
Barbara StreisandOriginal
2025-02-02 16:21:10441Durchsuche

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

c# natürliche Sortierung

realisieren Wenn der Dateiname in C#sortiert wird, ist es normalerweise erforderlich, natürliche Sortieralgorithmen anstelle der Standard -Wörterbuchsortierung zu verwenden. Dies kann sicherstellen, dass die Nummer numerisch sortiert ist und die Anzahl der Buchstaben in angemessener Reihenfolge sortiert ist.

Eine Möglichkeit, natürliches Sortieren zu erreichen, besteht darin, die erstellte Windows -Funktion

zu verwenden. Mit dieser Funktion können Sie die logische Reihenfolge der Zeichenfolge (einschließlich der Anzahl der Zahlen als Wert) und die sortierte Zeichenfolge vergleichen.

StrCmpLogicalW

dllimport

StrCmpLogicalW Sie können verwenden, um auf auf die Funktion zuzugreifen:

DllImport Verwenden Sie die Implementierung von Icomparer StrCmpLogicalW

<code class="language-csharp">[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);</code>
Um diese Funktion in Ihre

-Array -Sortierung zu integrieren, können Sie eine benutzerdefinierte -Klasses implementieren, wie unten gezeigt:

Beispiel verwendet FileInfo IComparer

Um diesen benutzerdefinierten Komparator zu verwenden, können Sie das
<code class="language-csharp">public sealed class NaturalFileInfoNameComparer : IComparer<FileInfo>
{
    public int Compare(FileInfo x, FileInfo y)
    {
        return StrCmpLogicalW(x.Name, y.Name);
    }
}</code>
-Array wie folgt sortieren:

Dies sortiert die

-Arrays nach der natürlichen Reihenfolge des Dateinamens (gleichzeitig unter Berücksichtigung der Nummer und der Buchstabensequenz des Briefes).

Das obige ist der detaillierte Inhalt vonWie kann ich natürliche Sortierreihenfolge für Dateinamen in C#implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn