2016-07-13 9 views
0

Ich versuche einen Weg zu finden, eine Zeichenkette zu teilen, die 2 {} {} Klammern enthält, aber nachdem sie geteilt wurde es hält die Klammern.Wie man eine Zeichenkette teilt, die {hallo} {world} curley Klammern enthält, halte aber die Klammern (vb.net)

Bevor word = {XXXX} {XXXX}

Nach

  • Wort (1) = {XXXX}

  • Wort (2) = {XXXX}

Ich versuchte mit Split, aber das entfernt immer die} {, die ich behalten möchte. Jemand bringt mich aus meinem Elend !! Ich benutze vb.net.

Dim word As String = "{hello}{world}" 
Dim wordArr As String() = word.Split("}") 
+0

Split tut entfernen Sie alles - es einfach Splits die Linie/Schnur an diesen Punkten. – Plutonix

+0

@Plutonix: Ich denke, er möchte die Klammern in den zurückgegebenen Teilstrings behalten. –

Antwort

0

Dies funktioniert:

Dim word As String = "{hello}{world}" 
    Dim wordArr As String() = word.Split({"}"}, StringSplitOptions.RemoveEmptyEntries) 
    Dim lst1 As New List(Of String) 
    For Each l In wordArr 
     lst1.Add(l & "}") 
    Next 
    wordArr = lst1.ToArray 
+0

Danke BanForFun schätze deine Hilfe wirklich. Das hat perfekt für mich funktioniert. –

2

Sie können auch reguläre Ausdrücke zu verwenden versuchen.

Dim pattern As New Regex("(?<Word1>\{\w+\})(?<Word2>\{\w+\})") 
    Dim match = pattern.Match("{Hello}{World}") 

    Dim word1 = match.Groups("Word1").Value 
    Dim word2 = match.Groups("Word2").Value 
0

ist hier ein Linq Weg:

Dim brace As Char = "}"c 
    Dim output As String() = (From s In input.Split(brace) 
     Where s <> String.Empty 
     Select s + brace).ToArray() 
0

Hier ist eine andere Möglichkeit, ein Iterator:

Public Iterator Function SplitAfter(input As String, delim As Char) As IEnumerable(Of String) 
    Dim sb As StringBuilder = New StringBuilder(input.Length) 
    For Each c As Char In input 
     sb.Append(c) 
     If c = delim Then 
      Yield sb.ToString() 
      sb.Clear() 
     End If 
    Next 
    If sb.Length > 0 Then 
     Yield sb.ToString() 
    End If 
End Function 

Dim word As String = "{hello}{world}" 
Dim wordArr As String() = SplitAfter(word, "}"c).ToArray() 
For Each w As String In wordArr 
    Console.WriteLine(w) 
Next 

Ausgang:

{hello} 
{world} 
Verwandte Themen