2012-09-10 30 views
5

Estoy tratando de guardar los grupos en una cadena a una matriz para que pueda usarlos en variables individuales si es necesario. Para esto utilizo split pero por alguna razón solo obtengo la cadena completa en la primera posición en la matriz: ultimate_array [0]. Si quiero usar ultimate_array [1] obtengo una excepción como "fuera de límites". ¿Tiene alguna idea de qué estoy haciendo mal?división no funciona correctamente

String string_final = ""; 
String[] ultimate_array = new String[100]; 
String sNrFact = ""; 

string_final="Nrfact#$idfact1#$valfact1#$idfact2#$valfact2#$idfact3#$valfact3#$idfact4#$valfact4#$idfact5#$valfact5#$idfact6#$valfact6#$idfact7#$valfact7#$idfact8#$valfact8#$idfact9#$valfact9#$idfact10#$valfact10"; 

ultimate_array = string_final.split("#$"); 
sNrFact = ultimate_array[0]; 
+3

El argumento para 'split()' debe ser una expresión regular, por lo que '$' coincide con "fin de cadena" La respuesta de –

Respuesta

2

tiene que escapar $ (final de la cadena)

ultimate_array = string_final.split("#\\$"); 
2
ultimate_array = string_final.split("#\\$"); 

La razón de su división no está funcionando correctamente es esa fracción utiliza expresiones regulares y "$" es un carácter especial para expresiones regulares (Drekka)

+0

es correcta. La razón por la cual su división no está funcionando correctamente es que split usa expresiones regulares y "$" es un carácter especial para expresiones regulares. – drekka

3

La división toma una expresión regular y $ es un carácter especial (final de cadena) por lo que debe escapar con la barra invertida \. De todos modos, también es un personaje especial, esta vez en Java, por lo que también debes escapar. El código final es:

ultimate_array = string_final.split("#\\$"); 
0

Basta con sustituir su línea:

ultimate_array = string_final.split("#$"); 

con:

ultimate_array = string_final.Split(new string[] { "#$" }, StringSplitOptions.None); 

Espero que se resuelva su problema ...

Cuestiones relacionadas