2012-01-11 18 views
0

私は、XMLファイルから返されると、私はにこれを分割したい、このVB.net - 区切り文字としてスペースが続く」を使用して文字列を分割する方法

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

に似ている文字列を持っています私の値の中には、テスト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

+0

@ user1144318:あなたの後ろに "それが剥奪されているかどうかを考慮する必要があります"これを表示するための答えとテスト結果を更新しました –

+0

あなたの例は私のテキスト文字列には引用符を付けませんでした。 XMLDocumentを使用するために、そのクラスを通して利用可能なメソッドを使用してパラメータ値を取得しています。お手伝いをしてくれてありがとうございました – user1144318

1

あなたがDictionary(Of String, String)作成するためにLINQを使用することができます。

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

関連する問題