Dim str As String = "1,3,5,6,7,8,9"
Dim strAry As String() = str.Split(",")
Dim tempStr As Integer
Dim flag As Boolean = False
'利用廻圈把陣列裡的元素帶出來比對
For j = 0 To strAry.Length - 1
'第一筆資料不用比,直接塞到要輸出的字串,及要比對的字串
If j = 0 Then
seq.Append(strAry(j).ToString)
tempStr = CInt(strAry(j))
End If
'從跑第二次廻圈開始就要與前一個字比對是否為連續數字
If j > 0 Then
'前一個數字加一,陣列元素裡的數字若相同,則為連續數字
If CInt(strAry(j).ToString) = tempStr + 1 Then
'如果陣列元素已經是最後一個就不用繼續比直接塞回傳值
If j = strAry.Length - 1 Then
If flag Then
seq.Append("-" & strAry(j).ToString)
Else
seq.Append("," & strAry(j).ToString)
End If
Else
'不是最後一個就繼續比,不塞回傳值
flag = True
tempStr = CInt(strAry(j).ToString)
End If
Else
'前一個數字加一,陣列元素裡的數字若不相同,就要將前一個字和這個數字同塞回傳值
If flag Then
seq.Append("-" & tempStr & "," & strAry(j).ToString)
Else
seq.Append("," & strAry(j).ToString)
End If
'設定下一個要比對的數字為此陣列元素的字
tempStr = CInt(strAry(j).ToString)
flag = False
End If
End If
Next