2009-07-31 22 views
9

- Bir dizesi vardır:VB.NET kullanarak

: Ben bir ayırıcı olarak "##RES" kullanarak bölmek istediğiniz

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

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

string.split fonksiyonu işlevsel pur için gereklidir seperatör, çoklu karakter veya karakterlerin dizisinde bölmek ve sürdürmek için bir aşırı sunmak için görünmüyor teşkil etmektedir.

indexOf("##res") için arama yapmak ve açık bir şey kaçırmadığım sürece bunu yapmak için dize manipülasyonunu kullanıyorum. Bir çözüm için SO aradım ama aslında peşinde olduğum şeyi yapan bir şey bulamadım.

aşağıdaki i buldum en yakın olan: Birden karakterler how-do-i-split-a-string-by-a-multi-character-delimiter-in-c

cevap

16

Bölme o zor değildir;

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

Bu iki unsur ile size bir dizi verecektir:

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

Ancak ayırıcı dışarı bırakılır bunu yapmaz String.split yöntemine aşırı yükler vardır. Bu aşırı zor değil; (Dize ayırıcı ile başlamıyorsa ilki hariç) o elemanların her birine önüne alınmalıdır: sadece ekstra kod millet bir sürü ... Neden değil

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

kullanın:

Dim inputs As String = "first value##second value##third value" 
Dim parts As String() = Strings.Split(inputs,"##") 
+0

Parlak! Çok net bir çözüm. –

+0

"Dizeler" sınıfı nerede tanımlandı? –