VB.net - 如何使用“后跟空格作为分隔符来拆分字符串”

时间:2012-01-11 23:16:21

标签: vb.net split space double-quotes

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

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

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

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

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

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分: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)))

注意:这不是故障安全的,f.e。如果有重复键,你会得到一个例外。