2009-07-31 33 views
9

El uso de VB.NET - Tengo una cadena:¿Cómo dividir una cadena utilizando un separador de carácter múltiple y mantener separador

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

Que quiero dividir utilizando el "##RES" como un separador para:

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

la función string.split no parece ofrecer una sobrecarga para dividir en múltiples caracteres o conjunto de caracteres y mantener el separador, que se requiere para pur funcional poses.

Estoy buscando simplemente buscando indexOf("##res") y usando la manipulación de cadenas para hacer esto a menos que me falta algo obvio? He buscado una solución para SO, pero no puedo encontrar nada que realmente haga lo que busco.

El siguiente es el más cercano que he encontrado: how-do-i-split-a-string-by-a-multi-character-delimiter-in-c

Respuesta

16

que parte en múltiples personajes no es tan complicado; existen sobrecargas en el método String.split que hace que:

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

Esto le dará una matriz con dos elementos:

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

Sin embargo, el separador se quede fuera. Sin embargo, esto no es demasiado complicado; debe añadirse en cada uno de los elementos (excepto el primero si la cadena no se inicia con el separador):

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

Eso es un montón de gente código extra ... ¿Por qué no sólo tiene que utilizar:

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

Brilliant! Solución muy clara –

+0

¿Dónde se define la clase "Cadenas"? –

Cuestiones relacionadas