Console.WriteLine(ConvertToRanges("1,2,3,4"))
Public Function ConvertToRanges(pageNos As String) As String
Dim result As String = String.Empty
Dim arr1 As String() = pageNos.Split(","c)
Dim arr As Integer() = New Integer(arr1.Length - 1) {}
For x As Integer = 0 To arr1.Length - 1
arr(x) = Convert.ToInt32(arr1(x).ToString())
Dim start As Integer, [end] As Integer
[end] = InlineAssignHelper(start, arr(0))
For i As Integer = 1 To arr.Length - 1
If arr(i) = (arr(i - 1) + 1) Then
result += start.ToString() + ", "
result += start.ToString() + "-" + [end].ToString() + ", "
start = InlineAssignHelper([end], arr(i))
result += start.ToString()
result += start.ToString() + "-" + [end].ToString()
Private Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T