2009-07-31 181 views
9

使用VB.NET - 我有一個字符串:如何使用多字符分隔符分割字符串,並保持分離

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

那我想用"##RES"作爲分隔符來拆分:

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

string.split函數似乎沒有提供超載來分割多個字符或字符數組並保持分隔符,這是功能性pur構成。

我正在尋找只是尋找indexOf("##res")和使用字符串操作來做到這一點,除非我失去了明顯的東西?我已經搜索了一個解決方案,但無法找到任何事實上做我以後。

以下是最接近我已經找到: how-do-i-split-a-string-by-a-multi-character-delimiter-in-c

回答

16

的多個字符分割是不是靠譜;上有String.Split方法,做的是重載:

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

這會給你兩種元素的數組:

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

然而,隔板被冷落。儘管如此,這並不是太棘手。應該預先考慮到每個元素(除了第一個,如果該字符串不與分離器開始):

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

太棒了!很清楚的解決方案 – 2014-05-20 16:55:10