2009-10-28 9 views
22

por ejemplo, puedo hacer esto:vb.net: ¿Se puede dividir una cadena por una cadena

split = temp_string.Split("<beginning of record>") 

aquellos recomendados:

split = Regex.Split(temp_string, "< beginning of record >") 

no su trabajo. es sólo devolver el primer carácter "<"

y aquellos de ustedes que recomienda:

Dim myDelims As String() = New String(){"< beginning of record >"} 
split = temp_string.Split(myDelims, StringSplitOptions.None) 

esto no está funcionando bien. también es devolver sólo el primer carácter

+0

Creo que el problema es que se necesita para escapar de los galones. Ver mi edición –

+1

Si continúa teniendo problemas, es posible que desee dar un ejemplo de que está en temp_string. Su muestra funciona bien para temp_string = "before after" –

+0

Regex.split funcionó para mí. La opción de conjunto de caracteres con String.split parece que debe dividirse en cada referencia de <, b, e, g, i, n, n, i, n, g, etc. individualmente en lugar de como un todo. – Jono

Respuesta

31

Prueba esto:

string[] myDelims = new string[] { "<beginning of record>" }; 
split = temp_string.Split(myDelims,StringSplitOptions.None); 

La ejecución de este a través de un convertidor de código de resultados en esta:

Dim myDelims As String() = New String() { "<beginning of record>" } 
split = temp_string.Split(myDelims, StringSplitOptions.None) 

También puede ser necesario para escapar de los galones, como este:

"\< beginning of record \>" 
+1

mate puedo obtenerlo en formato vb.net por favor –

1

No lo creo, solo se necesitan caracteres. Podrías hacer algunos feos hackear el trabajo y primero reemplazar todas las instancias de la cadena con algún carácter que no exista en la cadena, y luego dividir en ese carácter.

Editado para agregar: Creo que Regex.Split es capaz de dividir una expresión regular, por lo que si convierte una expresión regular simple que es simplemente la cadena que desea dividir, eso debería funcionar.

+0

brian ¿puede darme el código para ese –

+0

split = Regex.Split (temp_string, "")? –

+0

tal vez algo como esto? patrón = "" r dévil como Regex r = new Regex (patrón) resultados Dim como secuencia() resultados = r.Split (temp_string) podrían funcionar ... No sé vb ni nada, solo una conjetura basada en la documentación –

5

Puede ver el método Regex.Split().

Y esto parece funcionar

dim s as string = "you have a <funny> thing <funny> going on" 
    dim a() as string = Regex.Split(s,"<funny>") 
    for each b as string in a 
    Response.Write(b & "<br>") 
    next 
15

@Matthew Jones 'respuesta en VB.NET

Dim delim as String() = New String(0) { "<beginning of record>" } 
split = temp_string.Split(delim, StringSplitOptions.None) 
+0

+1 porque me ganaste –

2

Si lo que realmente es la división XML leer en una cadena, entonces no usar VB cuerdas para hacer ese trabajo. Use XSLT. VB/C# tienen métodos para representar XML con XSLT. Será mucho más rápido y más confiable.

3

esto parece funcionar

Dim myString As String = "aaajjbbbjjccc" 
    Dim mySplit() As Char = "jj".ToCharArray 
    Dim myResult() As String = myString.Split(mySplit, StringSplitOptions.RemoveEmptyEntries) 
6

Puede escribir a sí mismo un método de extensión para que sea más fácil (Basado en la respuesta por Matthew Jones)

(supongo que debería mostrar un ejemplo también. ..)

Dim results = "hay needle hay needle hay".Split("needle") 
' results(0) = "hay " 
' results(1) = " hay " 
' results(2) = " hay" 

... C# ...

public static class Tools 
{ 
    public static string[] Split(this string input, params string[] delimiter) 
    { 
     return input.Split(delimiter, StringSplitOptions.None); 
    } 
} 

... VB.Net ...

Module Tools 
    <Extension()> _ 
    Public Function Split(ByVal input As String, _ 
          ByVal ParamArray delimiter As String()) As String() 
     Return input.Split(delimiter, StringSplitOptions.None) 
    End Function 
End Module 
Cuestiones relacionadas