我想按字母順序排序填充字符串的ArrayList
。當我調用Sort方法時,字母似乎排序很好,但是當涉及數字時,Sort方法似乎排錯了。使用Sort方法排序字符串時發出的問題
拿這個代碼,例如:
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]);
}
這似乎是打印:
a
img_149
img_15
字符串 「a」 進行排序罰款,但其他兩個字符串的排序不正確。我想我明白爲什麼這是「4」出現在「5」之前,但是,149實際上高於15,在這種情況下,帶有15的字符串應首先打印。
對於我的情況,我從來不知道字符串究竟是什麼(字符串代表我的程序中的文件名),而且這些名字按照字母順序排列,並按順序排列(1,2,150,300)等)。有沒有人有任何想法如何糾正這一點?
Google for Natural Sort。字符串包含數字而不是數字,因此它們排序正確。 – Plutonix
我使用的解決方案可以在這裏找到(http://snipd.net/alphanumericnatural-sorting-in-c-using-icomparer)。 – JasonFH2K
@Plutonix感謝您提及自然排序。這就是我最終用來發現問題的原因,以及關於該主題的更多討論。這就解釋了爲什麼我之前沒有找到任何有關它的信息 - 沒有使用正確的術語。 – JasonFH2K