微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C#按名称中的自然数排序对文件进行排序?

我有像这样的目录中的文件
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-001.jpeg和0-030.jpg)
>依靠文件创建时间进行排序(假设文件是​​按顺序创建的).

有关#3的示例,请参阅Sorting Directory.GetFiles()的答案.

原文地址:https://www.jb51.cc/csharp/100807.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐