我有一个从xml文件返回的字符串,看起来与此类似
name1="test 1" name2="test2" name3="test 3"
我想将其拆分为key = value的3个元素。我不能只使用空格分割,因为我的某些值可能包含空格,例如test 1。
所以,我想使用“在空格之前分割字符串。我尝试了很多变化,但是无法找出正确的语法来指定我的分割字符是”后跟空格。例如,我尝试了text.split({""" "})
,但返回的元素被“并忽略了”之后的空格。
不应该这么困难。有人可以用正确的语法帮助我吗?
答案 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。如果有重复键,你会得到一个例外。