2012-09-10 24 views
5

Sto provando a salvare i gruppi in una stringa in una matrice in modo da poterli utilizzare in singole variabili se necessario. Per questo io uso split ma per qualche ragione ottengo solo la stringa completa nella prima posizione nell'array: ultimo_array [0]. Se voglio usare ultimate_array [1] ottengo un'eccezione come "out of bounds". Hai idea di cosa sto sbagliando?split non funziona correttamente

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

L'argomento di 'split()' dovrebbe essere un'espressione regolare, quindi '$' corrisponde "fine della stringa" La risposta di –

risposta

2

Hai bisogno di fuggire $ (fine della stringa)

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

La ragione per la vostra divisione non funziona correttamente è quella frazione utilizza regex e "$" è un carattere speciale per la regex (drekka)

+0

è corretta. Il motivo per cui il tuo split non funziona correttamente è che split usa regex e "$" è un carattere speciale per regex. – drekka

3

La scissione prende un'espressione regolare e $ è un carattere speciale (fine della stringa) quindi devi scappare con backslash \. Comunque è anche un personaggio speciale, questa volta in Java, quindi devi anche fuggire. Il codice finale è:

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

Basta sostituire la linea:

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

con:

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

Spero che il tuo problema sia risolto ...

Problemi correlati