Как разделить строку, используя многосимвольный разделитель и сохранить разделитель - PullRequest
10 голосов
/ 31 июля 2009

Использование VB.NET - у меня есть строка:

"##RES00012##Some value ##RES00034##Another value"

То, что я хочу разделить, используя "##RES" в качестве разделителя:

"##RES00012## Some value" и "##RES00034## Another value"

Функция string.split, по-видимому, не предлагает перегрузки для разделения на несколько символов или массива символов и поддержки разделителя, что требуется для функциональных целей.

Я смотрю на простой поиск indexOf("##res") и использую для этого манипуляции со строками, если я не пропустил что-то очевидное? Я искал решение для SO, но не смог найти ничего, что действительно делает то, что я хочу.

Следующее - самое близкое, что я нашел: как-д-я-сплит-а-строковое по-а-мультисимвольного-разделитель-в-с

Ответы [ 2 ]

18 голосов
/ 31 июля 2009

Разделение на несколько символов не так сложно; есть перегрузки метода String.Split, который делает это:

Dim input As String = "##RES00012## Some value ##RES00034## Another value"
Dim parts As String() = input.Split(New String() {"##RES"}, StringSplitOptions.RemoveEmptyEntries)

Это даст вам массив с двумя элементами:

"00012## Some value "
"00034## Another value"

Однако разделитель исключен. Это не слишком сложно, хотя; он должен быть добавлен перед каждым из элементов (кроме первого, если строка не начинается с разделителя):

Dim input As String = "##RES00012## Some value ##RES00034## Another value"
Dim parts As String() = input.Split(New String() {"##RES"}, StringSplitOptions.RemoveEmptyEntries)

For i As Integer = 0 To parts.Length - 1
    If i > 0 OrElse input.StartsWith("##RES") = True Then
        parts(i) = "##RES" & parts(i)
    End If
Next
13 голосов
/ 11 ноября 2013

Это много лишних людей ... Почему бы просто не использовать:

Dim inputs As String = "first value##second value##third value"
Dim parts As String() = Strings.Split(inputs,"##")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...