2012-01-11 108 views
0

我有一個從一個XML文件返回,類似於這樣VB.net - 如何用一個空格作爲分隔符分開使用「,後面的字符串

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

我想這個分裂成一個字符串3個元素的key = value。我不能用空格分割,因爲我的一些值可能包含空格,例如test 1.

所以,我想使用「在空格之前。我已經嘗試了很多變體,但無法找出正確的語法來指定我的拆分字符是「後跟一個空格」。例如,我嘗試過text.split({""" "}),但返回的是由「拆分」的元素,並忽略後面的空格」

它不應該是這樣難有人可以幫我正確的語法

回答

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" 
+0

我得到了相同的結果嘗試這一點。 – user1144318 2012-01-12 18:46:01

+0

@ user1144318:你必須考慮尾部的「被剝離了,我已經更新了答案,以顯示這個和測試結果 – 2012-01-12 18:55:49

+0

你的例子在我的文本字符串沒有引號的地方引用了,但我最終重寫了我的代碼使用XMLDocument,現在我正在使用通過該類可用的方法檢索參數值。謝謝無論如何試圖幫助。 – user1144318 2012-01-13 19:50:13

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.如果有重複的鍵,你會得到一個異常。

+0

但是這並沒有解決問題,因爲首先得不到分割返回的正確元素。分割本身是使用「,而不是2個字符的組合」加上下面的空格來返回元素。 – user1144318 2012-01-12 18:48:14

相關問題