VB.net - как разбить строку, используя «с пробелом в качестве разделителя» - PullRequest
0 голосов
/ 12 января 2012

У меня есть строка, которая возвращается из XML-файла и выглядит примерно так

name1="test 1" name2="test2" name3="test 3"

Я хочу разделить это на 3 элемента key = value. Я не могу просто разделить, используя пробел, потому что некоторые из моих значений могут содержать пробелы, например, тест 1.

Итак, я хотел бы разбить строку, используя «перед пробелом. Я перепробовал много вариантов, но не могу определить правильный синтаксис, чтобы указать, что мои символы разделения - это», за которым следует пробел. Например, я пробовал text.split({""" "}), но он возвращает элементы, разделенные на ", и игнорирует пробел после".

Это не должно быть так сложно. Может кто-нибудь помочь мне с правильным синтаксисом?

Ответы [ 2 ]

6 голосов
/ 12 января 2012

Попробуйте это:

text.Split(New String() {""" "}, StringSplitOptions.RemoveEmptyEntries)

Обновление

Поскольку это удалит завершающий "во всех, кроме последнего элемента, вы должны учитывать это при обработкерезультаты.

Вот пример:

    Dim sValue As String = "name1=""test 1"" name2=""test2"" name3=""test 3"""

    Dim asValues As String() = sValue.Split(New String() {""" "}, StringSplitOptions.RemoveEmptyEntries)

    For Each sKVP As String In asValues
        If Not sKVP.EndsWith("""") Then
            sKVP &= """"
        End If
        Console.WriteLine(sKVP)
    Next

и результирующий вывод:

name1="test 1"
name2="test2"
name3="test 3"
1 голос
/ 12 января 2012

Вы можете использовать LINQ для создания Dictionary(Of String, String):

Dim q = From item In value.Split({""" "}, StringSplitOptions.RemoveEmptyEntries)
        Select item.Split("="c)

Dim dict = q.ToDictionary(Function(i) (i(0)),
                          Function(i) (i(1)))

Примечание : это небезопасно, например, если есть повторяющиеся ключиЯ получу исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...