2017-01-20 2 views
0

У меня есть этот URL:Split Строка в Textboxes

http://www.website.com/base.htm?age=<number>&Team=<number>&userID=<number> 

Как получить части этого в Textboxes?

т.е.

Textbox1 = number after ?age= 
Textbox2 = number after &Team= 
Textbox3 = number after &userID= 

ответ

2

Если вы хотите вывести на 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. Это выход:

enter image description here

Теперь то, что я хотел бы сделать еще больше проверки для обеспечения параметров есть и что они имеют значения:

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 

Это скриншот из выход:

enter image description here

Если вы хотите взглянуть на значение параметра и вывод, что тогда вы могли бы просто сделать это вместо того, чтобы добавлять к 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 

В этом случае на выходе будет:

enter image description here

+1

Спасибо большое за этот большой и подробный ответ @ Jinx88909! Я очень ценю это. – Jack

2
Dim url As String = "http://www.website.com/base.htm?age=15&Team=100&userID=1109" 
Dim temp As String = url.Substring(url.IndexOf("?")+1) 
Dim args() As String 
args = temp.Split("&") 
Dim pair() As String 
For Each arg As String In args 
    pair = arg.Split("=") 
    console.WriteLine(pair(0)) 
    console.WriteLine(pair(1)) ' <--- value after = 
Next