通过getcomboliststring获得了一个字符串,如1.2.3.10,1.2.3.1,1.2.3.9,1.4.5然后把它们解析成为一个包括上级节点的序列如1,1.2,1.2.3,1.2.3.10,1.2.3.1,1.2.3.9,1.4,1.4.5
问题是:在排序的时候,1.2.3.10会排在1.2.3.9的前面。
如何让它正确排序?
定义了一个函数来解析字符串
Dim SourceStrs As String = Args(0)
Dim splitcode As String = Args(1)
Dim n As Integer = args(2) '1表示得到本上级,2表示得到上级
Dim k As Byte = args(3) '1表示输出字符串,2表示输出集合
Dim AimStr As String
Dim ls As new List(of String)
For Each ss As String In SourceStrs.Split(splitcode)
Dim temp As String = ""
Dim s As String() = ss.Split(".")
For i As Integer = 0 To s.Length - n
temp = iif(temp = "" ,s(i),temp & "." & s(i))
If ls.Contains(temp) = False Then
ls.Add(temp)
End If
Next
Next
Select Case k
Case 1
Dim ary As array = ls.ToArray
array.sort(ary) '这里的排序,会将1.2.10排在1.2.9的前面
AimStr = String.join(",",ary).trim(",")
Return AimStr
Case 2
Return ls '集合也需要正确的排序
End Select
[此贴子已经被作者于2018/6/21 9:15:20编辑过]