>>В исходной строке user_id полностью?
>>В таком случае ошибка в параметрах функции GetBetween.
Во-первых, исправляем функцию, чтобы она правильно обрабатывала последний в строке токен - добавляем дополнительное условие на случай, если strEnd пустой:
Public Function GetBetween(ByRef strSource As String, ByRef strStart As String, ByRef strEnd As String, Optional ByRef startPos As Integer = 0) As String
Dim iPos As Integer, iEnd As Integer, lenStart As Integer = strStart.Length
Dim strResult As String
strResult = String.Empty
iPos = strSource.IndexOf(strStart, startPos)
iEnd = strSource.IndexOf(strEnd, iPos + lenStart)
If iPos -1 AndAlso iEnd <> -1 Then
If strEnd.Length>0 Then
strResult = strSource.Substring(iPos + lenStart, iEnd - (iPos + lenStart))
Else
strResult = strSource.Substring(iPos + lenStart, strSource.Length-(iPos + lenStart))
End If
End If
Return strResult
End Function
Во-вторых, исправляем вызов функции, явно передавая в качестве strEnd пустую строку:
If e.Url.ToString().IndexOf("user_id") <> -1 Then
user_id = GetBetween(e.Url.ToString(), "user_id=","", 0)
End If