【发布时间】:2020-08-05 19:26:50
【问题描述】:
这是我的代码
Dim orderedFiles = New System.IO.DirectoryInfo(dir).GetFiles("file_*.jpeg").OrderBy(Function(x) x.Name)
For Each f As System.IO.FileInfo In orderedFiles
msgbox(f.name)
Next
显示
file_1.jpeg
file_10.jpeg
file_11.jpeg
file_12.jpeg
file_13.jpeg
file_14.jpeg
file_2.jpeg
file_3.jpeg
file_4.jpeg
file_5.jpeg
file_6.jpeg
file_7.jpeg
file_8.jpeg
file_9.jpeg
我希望他们按 1 - 2 - 3 排序...... 14
我该怎么做?
【问题讨论】:
-
如果你不明确排序,你会得到什么顺序?
-
它们已经正确排序。它们按它们的 ASCII 值排序,因此
1后跟10是正确的顺序。解决此问题的常用方法是在单个数字的左侧添加零,如01,这将允许它们按您想要的顺序排序。如果这对您不起作用,您将不得不编写自己的代码来进行排序。 -
我相信感兴趣的 API 是
StrCmpLogicalW。 -
我在 SO 上找不到 VB.Net 示例,但 Google 在 bytes.com/topic/visual-basic-net/answers/… 找到了一个
-
问题解决了!我设置了每个文件名 padleft
000000例如000001和000010现在一切都很好。谢谢大家