VB. net не может отсортировать имя файла - PullRequest
0 голосов
/ 22 апреля 2020

это мой код

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
как я могу это сделать Это?

Ответы [ 2 ]

4 голосов
/ 22 апреля 2020

Вы можете делать что хотите, не меняя имен файлов, используя 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
0 голосов
/ 22 апреля 2020

проблема решена! я просто устанавливаю каждое имя файла с помощью padleft 000000
например, 000001 и 000010 теперь все в порядке

код

Dim test1 As String = "1"
test1 = test1.ToString.PadLeft(6, "0"c)

дисплей

000001
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...