Sortierung wie im Windows explorer

#1

Nabend, ich habe solche Zeichenketten:

Bcd 8
Bcd 9
Bcd 10

Abc 1,8
Abc 1,9
Abc 1,10

Cde 1.9_8
Cde 1.9_9
Cde 1.9_10

Bcd ist ein Platzhalter für Fest-Präfix. Ihr versteht das Problem, lexikalisch sortiert wird daraus:

Bcd 10
Bcd 8
Bcd 9

Abc 1,10
Abc 1,8
Abc 1,9

Cde 1.9_10
Cde 1.9_8
Cde 1.9_9

der Windows explorer sortiert es aber anderes, richtiger. Wie heißt diese Sortierung und wie kann ich so auch sortieren?

#2

‘windows explorer sort order’
->
How to Disable Numerical File Name Sorting and Enable Classic Literal Sorting in Windows Explorer? - AskVG

‘windows explorer sort order java’
noch mehr

#3

Yuhu, mit w e sort order -> java -> StrCmpLogicalW -> natural sort order -> alphanumeric sort order (sorry, für dieses ganze Denglish), hab ich jetzt meine Frage beantworten können.
Antwort: Besser nicht implementieren! teilweise RegEx in Sicht …

#4

Was ist daran beunruhigend?

Wenn dein “fester Prefix” eine einheitliche, feste Länge hat, dann brauchst du keinen regulären Ausdruck. Anderenfalls brauchst du ihn, um die Nummern zu finden und eben dort nicht alphanumerisch, sondern numerisch zu sortieren.

“Brauchst” ist hier natürlich relativ. Du kannst natürlich auch in einer Schleife zehnmal nach dem Index aller Ziffern suchen und den kleinsten Wert nutzen etc. doch da sind reguläre Ausdrücke wohl deutlich angenehmer.

#5

Ich meinte damit, man sollte das nicht selber implementieren. Das MIT hat schöne Algorithmus dazu veröffentlicht, das sollte man auch übernehmen.

Und das hab ich auch getan, und die die Sortierung ist perfekt. :slight_smile: (Es geht darum, wie ein Mensch das “automatisch” im Kopf sortiert. :frowning: )

Es geht darum, man hat zwei Zeichenketten, und möchte diese jetzt nicht einfach nur lexikalisch vergleichen, sondern nach den bestimmten “Zifferngruppen”. Und das ganze bitte höchsteffizient.

Meine Frage zielte einfach darauf, wie das ganze Ungetüm (“umgangssprachlich”) heißt.

So ein SQLisches ORDER(ED) BY-Keyword wäre mal geil. :slight_smile:

*** Edit ***

Hier steht alles:

Dieses “Dear readers:” gehört nicht dazu, ich weiß auch nicht, wieso um Geld gefragt wird, der Organisation läuft doch.^^