【发布时间】:2012-08-22 16:08:07
【问题描述】:
我在这样的目录中有文件
0-0.jpeg
0-1.jpeg
0-5.jpeg
0-9.jpeg
0-10.jpeg
0-12.jpeg
....
当我加载文件时:
FileInfo[] files = di.GetFiles();
他们的顺序错误(他们应该像上面那样):
0-0.jpeg
0-1.jpeg
0-10.jpeg
0-12.jpeg
0-5.jpeg
0-9.jpeg
如何解决?
我试图对它们进行排序,但没有办法:
1) Array.Sort(files, (f1, f2) => f1.Name.CompareTo(f2.Name));
2) Array.Sort(files, (x, y) => StringComparer.OrdinalIgnoreCase.Compare(x.Name, y.Name));
【问题讨论】:
-
“错误的顺序”根据谁?
0-12.jpeg出现在0-5.jpeg之前,因为0-1出现在0-5之前。排序方法着眼于字符,而不是数值。 -
文件名按字符串排序,不是数字的问题。因此,12 总是在 9 之前。您可以确保文件名是 0-09.jpeg 或实现一个比较器将文件名转换为数字并进行比较。
-
@Mark Sherretta 我猜你是对的
标签: c#