【发布时间】:2015-05-01 15:01:01
【问题描述】:
我正在尝试按此顺序对以下文件进行排序:
TMP_SDF_1180741.PDF
TMP_SDF_1179715.PDF
TMP_SDF_1162371.PDF
TMP_SDF_1141511.PDF
TMP_SDF_1131750.PDF
TMP_SDF_1117362.PDF
TMP_SDF_1104199.PDF
TMP_SDF_1082698.PDF
TMP_SDF_1062921.PDF
TMP_SDF_1043875.PDF
TMP_SDF_991514.PDF
TMP_SDF_970621.PDF
TMP_SDF_963154.PDF
TMP_SDF_952954.PDF
TMP_SDF_948067.PDF
TMP_SDF_917669.PDF
TMP_SDF_904315.PDF
TMP_SDF_899902.PDF
TMP_SDF_892398.PDF
TMP_SDF_882024.PDF
但实际输出是这样的:
TMP_SDF_991514.PDF
TMP_SDF_970621.PDF
TMP_SDF_963154.PDF
TMP_SDF_952954.PDF
TMP_SDF_948067.PDF
TMP_SDF_917669.PDF
TMP_SDF_904315.PDF
TMP_SDF_899902.PDF
TMP_SDF_892398.PDF
TMP_SDF_882024.PDF
TMP_SDF_1180741.PDF
TMP_SDF_1179715.PDF
TMP_SDF_1162371.PDF
TMP_SDF_1141511.PDF
TMP_SDF_1131750.PDF
TMP_SDF_1117362.PDF
TMP_SDF_1104199.PDF
TMP_SDF_1082698.PDF
TMP_SDF_1062921.PDF
TMP_SDF_1043875.PDF
我曾尝试通过 GetFiles 研究排序方法,但是当我应用它们时,我收到有关系统集合无法绑定到一维数组的错误,这令人沮丧。这是我的代码:
Dim di As New IO.DirectoryInfo("C:\temp")
Dim aryFi As IO.FileInfo() = di.GetFiles("*.PDF")
Dim fi As IO.FileInfo
For Each fi In aryFi
My.Computer.FileSystem.RenameFile("C:\TEMP\" & fi.Name, listBox1.SelectedItem.ToString & ".pdf")
listBox1.SelectedIndex = listBox1.SelectedIndex - 1
Next
我将文件重命名为 a1 a2 a3 等,这样当我在 PDF 中组合时,它们是按时间顺序排列的。我想要排序的方式,将它们按时间顺序排列。我相信有一个更简单的方法。如您所知,PDF 文件 (1180741) 中的数字越大,文件内容的最近日期就越多。而 882024 将是最旧的文件内容。
【问题讨论】:
-
它正在进行 alpha 排序。 数字代表一个日期或序列对你无关紧要,它只是给计算机的文本,这样“9”将排序高于“10734756”。跨度>
-
我不是 100% 清楚你想要做什么。如果要按字母顺序获取文件名列表,请将文件名放入字符串类型的数组列表中,然后使用排序方法。如果要反方向排序,在排序方法后使用reverse方法。
-
为了扩展 Plutonix 的评论,Explorer 将对数字进行不同的排序,因为它假定您希望将它们视为数字,而不是文本。
-
有许多不同的方法可以实现这一点。也许最容易解释的是,如果文件名的非数字部分始终相同,则去掉字母,将它们放入整数数组中,对它们进行排序,然后在输出中将字母加回。