Ich versuche, eine ArrayList
mit Zeichenfolgen alphabetisch gefüllt zu sortieren. Wenn ich die Sort-Methode aufruft, scheint das Alphabet gut zu sortieren, aber wenn es Zahlen gibt, scheint die Sort-Methode falsch zu sortieren.Problem mit der Sort-Methode beim Sortieren von Zeichenfolgen mit Zahlen
Nehmen Sie diesen Code zum Beispiel:
ArrayList list = new ArrayList();
list.Add ("img149");
list.Add ("img15");
list.Add ("a");
list.Sort();
for (int i = 0; i < list.Count(); i++) {
Console.WriteLine (list [i]);
}
Dies scheint zu drucken:
a
img_149
img_15
die Zeichenfolge "a" sortiert in Ordnung, aber die beiden anderen Saiten falsch sortiert werden. Ich denke, ich verstehe, warum dies so ist, wie "4" vor "5" kommt, 149 ist jedoch wirklich höher als 15, in welchem Fall die Zeichenfolge mit der 15 zuerst gedruckt werden sollte.
Für meine Situation weiß ich nie genau, wie die Strings sein werden (die Strings repräsentieren Dateinamen in meinem Programm), und es ist wichtig, dass die Namen alphabetisch mit den Nummern in der Reihenfolge sortiert sind (1, 2, 150, 300) , etc.). Hat jemand Ideen, wie das zu beheben ist?
Google für Natural Sort. Zeichenketten enthalten Zahlen und keine Zahlen, daher sortieren sie richtig. – Plutonix
Die Lösung, die ich verwendet habe, kann [hier] gefunden werden (http://snipd.net/alphanumericnatural-sorting-in-cusing-icomparer). – JasonFH2K
@Plutonix Vielen Dank für die Erwähnung von Natural Sort. Das ist es, was ich schließlich benutzt habe, um das Problem zu finden, und eine Menge mehr Diskussionen über das Thema. Das erklärt, warum ich vorher nichts darüber gefunden habe - nicht die richtige Terminologie. – JasonFH2K