2009-07-31 11 views
9

- 私は、文字列を持っている:VB.NETを使用して

:私はにセパレータとして"##RES"を使用して分割したい

"##RES00012##Some value ##RES00034##Another value" 

"##RES00012## Some value"および"##RES00034## Another value"

string.split機能は、複数の文字または文字の配列に分割して機能分離に必要なセパレータを維持するためのオーバーロードを提供していないようですポーズ。

私は単純にindexOf("##res")を検索し、文字列操作を使用してこれを行うには何か明白なものがないと思われますか?私はSOのために解決策を探しましたが、実際に私が何をしているかを見つけることができませんでした。

次は私が見つけた最も近い:複数の文字の how-do-i-split-a-string-by-a-multi-character-delimiter-in-c

答えて

16

分割は、そのトリッキーではありません。

Dim input As String = "##RES00012## Some value ##RES00034## Another value" 
Dim parts As String() = input.Split(New String() {"##RES"}, StringSplitOptions.RemoveEmptyEntries) 

は、これは、2つの要素を持つあなたの配列を与える:

"00012## Some value " 
"00034## Another value" 

しかし、セパレータが取り残されることないのstring.Split法上のオーバーロードがあります。これはあまりにもトリッキーではありません。理由だけではなく、使用しないで...

Dim input As String = "##RES00012## Some value ##RES00034## Another value" 
Dim parts As String() = input.Split(New String() {"##RES"}, StringSplitOptions.RemoveEmptyEntries) 

For i As Integer = 0 To parts.Length - 1 
    If i > 0 OrElse input.StartsWith("##RES") = True Then 
     parts(i) = "##RES" & parts(i) 
    End If 
Next 
13

余分なコードの多くの人々だこと:

それは(文字列は、セパレータに起動しない場合は、最初のものを除く)の各要素の前に追加する必要があります
Dim inputs As String = "first value##second value##third value" 
Dim parts As String() = Strings.Split(inputs,"##") 
+0

ブリリアント!非常に明確な解決策。 –

+0

"Strings"クラスはどこに定義されていますか? –

関連する問題