【发布时间】:2016-12-03 09:54:51
【问题描述】:
我正在尝试按字母顺序对充满字符串的ArrayList 进行排序。当我调用 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、等等。)。有没有人对如何纠正这个问题有任何想法?
【问题讨论】:
-
谷歌自然排序。字符串包含数字而不是数字,因此它们排序正确。
-
我使用的解决方案可以在here找到。
-
@Plutonix 感谢您提及自然排序。这就是我最终用来发现问题的方法,以及关于该主题的更多讨论。这就解释了为什么我之前没有找到任何关于它的信息——没有使用正确的术语。