Если вы хотите вывести на TextBox
и может гарантировать определенное количество параметров, это довольно просто:
Dim url As String = "http://www.website.com/base.htm?age=15&Team=3&userID=1"
TextBox1.Text = url.Split("?"c)(1).Split("&"c)(0).Split("="c)(1)
TextBox2.Text = url.Split("?"c)(1).Split("&"c)(1).Split("="c)(1)
TextBox3.Text = url.Split("?"c)(1).Split("&"c)(2).Split("="c)(1)
Код выглядит немного нечитаемым но он выполняет эту работу. Обратите внимание на увеличение числа на втором Split
. Это выход:
Теперь то, что я хотел бы сделать еще больше проверки для обеспечения параметров есть и что они имеют значения:
Dim url As String = "http://www.website.com/base.htm?age=15&Team=3&userID=1"
Dim parameters As String = Nothing
If url.Contains("?") Then
parameters = url.Split("?"c)(1)
End If
Dim age As Integer = 0
Dim team As Integer = 0
Dim userId As Integer = 0
If parameters IsNot Nothing Then
For Each parameter In parameters.Split("&"c)
If parameter.Contains("=") Then
If parameter.ToLower().StartsWith("age") Then
Integer.TryParse(parameter.Split("="c)(1), age)
ElseIf parameter.ToLower().StartsWith("team") Then
Integer.TryParse(parameter.Split("="c)(1), team)
ElseIf parameter.ToLower().StartsWith("userid") Then
Integer.TryParse(parameter.Split("="c)(1), userId)
End If
End If
Next
End If
TextBox1.Text = age.ToString()
TextBox2.Text = team.ToString()
TextBox3.Text = userId.ToString()
Выход такой же, как и выше, но я сделали дальнейшую проверку. Я уверен, что еще больше проверок можно было бы внедрить, но я думаю, что это даст вам хорошее начало.
То, что я хотел сделать, это сохранить как имя и значение параметра с помощью Dictionary, который может пригодиться, так думал, я бы показал вам этот подход:
Dim url As String = "http://www.website.com/base.htm?age=<number>&Team=<number>&userID=<number>"
Dim urlParameters As New Dictionary(Of String, String)
If url.Contains("?") AndAlso url.Contains("&") Then
For Each param In url.Split("?"c)(1).Split("&"c)
Dim kp() As String = param.Split("="c)
urlParameters.Add(kp(0), kp(1))
Next
End If
'ouput
For Each parameter In urlParameters
Debug.WriteLine("Key: " & parameter.Key & " Value:" & parameter.Value)
Next
Это скриншот из выход:
Если вы хотите взглянуть на значение параметра и вывод, что тогда вы могли бы просто сделать это вместо того, чтобы добавлять к Dictionary
:
If url.Contains("?") AndAlso url.Contains("&") Then
For Each param In url.Split("?"c)(1).Split("&"c)
Debug.WriteLine(param.Split("="c)(1))
Next
End If
В этом случае на выходе будет:
Спасибо большое за этот большой и подробный ответ @ Jinx88909! Я очень ценю это. – Jack