0

我有一个从 xml 文件返回的字符串,看起来与此类似

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

我想将其拆分为 key=value 的 3 个元素。我不能只使用空格进行拆分,因为我的某些值可能包含空格,例如 test 1。

所以,我想在空格前使用 " 拆分字符串。我尝试了很多变体,但无法找出正确的语法来指定我的拆分字符是 " 后跟空格。例如,我已经尝试过text.split({""" "}),但返回的元素被“分割”并忽略“”之后的空格。

不应该这么难。有人可以帮我正确的语法吗?

4

2 回答 2

6

尝试这个:

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"
于 2012-01-11T23:22:15.293 回答
1

您可以使用 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)))

注意:这不是故障安全的,如果有重复的键,你会得到一个异常。

于 2012-01-11T23:49:18.170 回答