Sortieren von Zeichenfolgen mit Zahlen auf benutzerfreundliche Weise

Ich war überrascht, als ich feststellte, dass Windows Dateien auf fortgeschrittene Weise nach Namen sortiert. Lassen Sie mich Ihnen ein Beispiel geben:

Track1.mp3
Track2.mp3
Track10.mp3
Track20.mp3

Ich denke, dass diese Namen (während des Sortierens) anhand von Buchstaben und Zahlen getrennt verglichen werden.

Andererseits ist das Folgende dieselbe Liste, die auf eine Standardweise sortiert ist:
Track1.mp3
Track10.mp3
Track2.mp3
Track20.mp3

Ich möchte in Delphi einen Vergleichsalogorithmus erstellen, mit dem ich Zeichenfolgen auf die gleiche Weise sortieren kann. Zuerst dachte ich, es würde ausreichen, aufeinanderfolgende Zeichen zweier Zeichenketten zu vergleichen, während sie Buchstaben sind. Wenn eine Ziffer an einer Position beider Zeichenfolgen gefunden würde, würde ich alle darauf folgenden Ziffern lesen, um eine Zahl zu bilden, und dann die Zahlen vergleichen.

Um Ihnen ein Beispiel zu geben, vergleiche ich die Zeichenfolgen "Track10" und "Track2" folgendermaßen:
1) lese Zeichen, während sie gleich sind und während sie Buchstaben sind: "Track", "Track"
2) Wenn eine Ziffer gefunden wird, lesen Sie alle folgenden Ziffern: "10", "2"
2a) Wenn sie gleich sind, gehe zu 1 oder beende es
Zehn ist größer als zwei, also ist "Track10" größer als "Track2"

Es schien alles in Ordnung zu sein, bis ich während meiner Tests bemerkte, dass Windows "Track010" als niedriger als "Track10" ansah, während ich dachte, dass das erste größer war, da es länger war (ganz zu schweigen davon, dass beide laut meinem Algorithmus die Saiten wären gleich (was falsch ist).

Könnten Sie mir die Idee geben, wie Windows Dateien nach Namen sortiert, oder haben Sie vielleicht einen gebrauchsfertigen Algorithmus (in einer beliebigen Programmiersprache), auf den ich mich stützen könnte?

Danke vielmals!
Mariusz

Antworten auf die Frage(3)

Ihre Antwort auf die Frage