2010-09-22 12 views
6

Estoy delimitando mis datos con el "//" ya que lo estoy pasando a mi servicio web. Mi servicio web está dividiendo los datos en una matriz de este modo:.Split ("//") también está recogiendo "/"

myArray = al(i).ToString.Split("//") 

Todo funciona muy bien, sin embargo, si paso en algunos datos como estos: 100/100 entonces que también se consigue dividir. ¿Hay alguna manera de asegurarse de que solo el "//" se divida?

+1

¿Por qué está pasando los datos al servicio web con '//' como delim, en lugar de ';' o ',' o '|'? –

+0

... ¿es este VB.NET? Parece que podría estar usando la sobrecarga incorrecta debido a la idiotez incorporada. Actualice a C# hoy para deshacerse de este problema. También debe actualizar a una forma más robusta de pasar múltiples valores, por ejemplo, usando una matriz. La mayoría de las implementaciones de servicios web deberían poder pasar eso bastante bien. –

+0

Bueno, tenemos texto que se transfiere, así que quería asegurarme de no pasar algo como delimitador. Sin embargo, el '|' podría funcionar bien Y sí, esto es VB.Net. Actualicé la pregunta para incluir esa información. – webdad3

Respuesta

20

El compilador de VB.Net está convirtiendo su cadena en una matriz Char y llamando al this overload.
Por lo tanto, se divide en / o /.

es necesario llamar a the overload that takes a string array, así:

"100/100".Split(New String() { "//" }, StringSplitOptions.None) 
+3

AH! Eso me tomó un segundo descubrirlo. Eso es simplemente * desagradable *! La cadena es realmente una matriz de caracteres que contiene '/' y '/'. ¡YIKES! –

+1

¿Debería el ejemplo ser "100 // 100"? – izb

+1

@izb: No. Él específicamente quiere que esa cuerda no se divida. – SLaks

2

Siempre, siempre utilice Option Strict.

Con Option Strict el código original produce un error, en lugar de elegir la sobrecarga inútil:

de error 1 Option Strict On no permite conversiones implícitas de 'Cadena' a 'Char'.

+0

+1 No me importa lo relevante, este SIEMPRE es un buen consejo. –

+0

Gracias por esa respuesta y haré ese cambio en mi código. Estoy un poco confundido sobre por qué "//" no es una cadena en el 1er lugar? Si tiene una referencia que pueda leer sobre este tema, ¡sería genial! Además, ¿qué hubieras hecho si hubieras obtenido este error? – webdad3

+1

@Jeff Si tuviera el error, habría verificado las sobrecargas disponibles para Split y habría visto que no había una que aceptara una cadena. Espero haber descubierto otra forma de obtener el resultado que quería. Mi respuesta tiene un enlace a los documentos sobre Option Strict, ese es un buen punto de partida. – MarkJ