2016-07-13 1 views
0

Я пытаюсь найти способ разделения строки, содержащей 2 {} {} скобки, но после ее разделения он держит скобки.Как разбить строку, содержащую скобки скобок {hello} {world}, но сохранить скобки (vb.net)

Перед словом = {XXXX} {ХХХХ}

После

  • Слово (1) = {XXXX}

  • слово (2) = {XXXX}

Я пробовал использовать split, но это всегда удаляет} {, который я хочу сохранить. Кто-то вытащит меня из моих страданий! Я использую vb.net.

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

Split оленья кожа удалить что-либо - это просто шпагат строка/строка в этих точках. – Plutonix

+0

@Plutonix: Я думаю, он хочет сохранить фигурные скобки в возвращаемых подстроках. –

ответ

0

Это будет работать:

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

Спасибо, что BanForFun очень ценю вашу помощь. Это работало идеально для меня. –

2

Вы также можете попробовать использовать регулярные выражения.

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

Вот Linq путь:

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

Вот еще один вариант с использованием итератора:

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 

Выходные:

{hello} 
{world} 
Смежные вопросы