パス (Raw URL) を 2 つの部分に簡単に分割する方法を見つけようとしています: 例: /search/criteria/newyork/list
この場合、3 番目のスラッシュの前にすべてを含む文字列を入力したいと思います: "/search/criteria" また、2 番目の部分を文字列に取得したい: "newyork/list"
これを試して:
Dim sAux() As String = sURL.Split("/"c)
Dim sResult As String = ""
If sAux.Length > 3 Then
For i As Integer = 2 to sAux.Length - 1
sResult &= sAux(i) & "/"
Next
End If
またはこれ:
Dim sAux As New List(Of String)(sURL.Split("/"c))
sAux.RemoveRange(0,2)
sResult = String.Join("/", sAux.ToArray())
を使用IndexOf
して 3 番目のスラッシュを見つけることができます (最初の文字が常に最初のスラッシュであり、文字列に少なくとも 3 つのスラッシュがあると仮定します)。
Dim index3 = url.IndexOf("/"c, url.IndexOf("/"c, 1) + 1)
Substring
次に、そのスラッシュの前後の部分を取得するために使用できます。
Dim path As String = url.Substring(0, index3)
Dim resource As String = url.Substring(index3 + 1)
Dim ar As String()
Dim str1 As String
Dim str2 As String
Dim a As Integer
Dim splitPosition = 3
Dim urlToSplit = "/search/criteria/newyork/list"
ar = urlToSplit.Split("/"c)
If UBound(ar) < splitPosition Then
' there are 3 or less slashes. do what you want here, error or just exit
Else
For a = 0 To splitPosition - 1
If Not String.IsNullOrEmpty(ar(a)) Then str1 += ar(a) + "/"
Next
For a = splitPosition To UBound(ar)
If Not String.IsNullOrEmpty(ar(a)) Then str2 += ar(a) + "/"
Next
End If
str1
含まれ/search/criteria/
str2
ます含まれますnewyork/list/
このコードは任意の数の/
組み合わせを処理し、不適切に形成されたURLに対してエラーになることはありません。
文字列が常に同じ形式で、同じ数の要素 (分割された配列) を持っている場合は、String.Format
メソッドを次のように使用できます。
Dim arr() As String = "/search/criteria/newyork/list".Split("/"c)
Dim str1 As String = String.Format("/{1}/{2}", arr) '/search/criteria
Dim str2 As String = String.Format("{3}/{4}", arr) 'newyork/list