windows里面排序是安装字符的顺序,除非是a02和a10才会那么办,它不会智能的去分析字母后面数字的大小等,如果是许多文件时,资源浏览器看起来就比较郁闷罗。hoho

解决方案 »

  1.   

    To:aiqinbird(爱琴鸟) 可能我表达的不是很好
    问题是,一个目录由很多文件,文件名的长度不一致,文件名中数字的位置也不一致,不能判断何时要反过结果来全部反过结果来,升序变成了降序,但是结果并不是期望的
      

  2.   

    http://dev.csdn.net/Develop/article/41/41245.shtm
    给你点好东西研究下吧~~·
      

  3.   

    我举个例子,下列几个文件
    ND6020B11.c
    ND6020B2.c
    ND6020B10.pc
    ND6020B1.h排序结果为:
    ND6020B1.h
    ND6020B10.pc
    ND6020B11.c
    ND6020B2.cwindows资源管理器排序结果为:
    ND6020B1.h
    ND6020B2.c
    ND6020B10.pc
    ND6020B11.c我也想知到资源管理器依据什么来排序的,但他的排序结果是我所期望的
      

  4.   

    To:xurui1016(小蕊) 
    这篇文章以前看过,对我现在这个问题帮助不大,不过还是谢谢你
      

  5.   

    还是自问自答了
        Private Function FileNameComparer(ByVal name1 As String, ByVal name2 As String) As Integer
            Dim n1 As MatchCollection = New Regex("\d").Matches(name1)
            Dim n2 As MatchCollection = New Regex("\d").Matches(name2)
            Dim sNumber1, sNumber2 As String        For Each m As Match In n1
                sNumber1 &= m.Value
            Next
            For Each m As Match In n2
                sNumber2 &= m.Value
            Next        If IsNumeric(sNumber1) = False OrElse IsNumeric(sNumber2) = False Then
                Return [String].Compare(name1, name2, False)
            Else
                Dim sChar1, sChar2 As String
                Dim s1 As MatchCollection = New Regex("[^\d]").Matches(name1)
                Dim s2 As MatchCollection = New Regex("[^\d]").Matches(name2)            For Each m As Match In s1
                    sChar1 &= m.Value
                Next
                For Each m As Match In s2
                    sChar2 &= m.Value
                Next            If sChar1 = sChar2 Then
                    Return CType(sNumber1, Integer).CompareTo(CType(sNumber2, Integer))
                Else
                    Return [String].Compare(name1, name2, False)
                End If
            End If
        End Function