[英]vb.net cannot sort file name
this is my code这是我的代码
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
display展示
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
i want them to sort 1 - 2 - 3...... 14我希望他们按 1 - 2 - 3 排序...... 14
how can i do it?我该怎么做?
You can do what you want without changing the file names using the StrCmpLogicalW
API, eg您可以在不更改文件名的情况下使用
StrCmpLogicalW
API 执行您想要的操作,例如
Imports System.IO
Imports System.Runtime.InteropServices
Module Module1
<DllImport("shlwapi.dll", CharSet:=CharSet.Unicode)>
Private Function StrCmpLogicalW(x As String, y As String) As Integer
End Function
Sub Main()
Dim files = New DirectoryInfo("D:\johnm\Documents\Test").GetFiles()
Array.Sort(files,
Function(file1, file2) StrCmpLogicalW(file1.Name, file2.Name))
For Each file In files
Console.WriteLine(file.Name)
Next
Console.ReadLine()
End Sub
End Module
problem solved!问题解决了! i just set every file name with padleft
000000
我只是用 padleft
000000
设置每个文件名
eg 000001
and 000010
now everything is fine例如
000001
和000010
现在一切都很好
code代码
Dim test1 As String = "1"
test1 = test1.ToString.PadLeft(6, "0"c)
display展示
000001
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.