2012-09-10 5 views
5

J'essaie de sauvegarder les groupes dans une chaîne à un tableau afin que je puisse les utiliser dans des variables individuelles si nécessaire. Pour cela j'utilise split mais pour une raison quelconque, je reçois seulement la chaîne complète dans la première position dans le tableau: ultimate_array [0]. Si je veux utiliser ultimate_array [1], je reçois une exception comme "hors limites". Avez-vous une idée de ce que je fais mal?split ne fonctionne pas correctement

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'argument de 'split()' devrait être une regex, donc '$' correspond '' fin de chaîne '' La réponse de –

Répondre

2

Vous devez échapper $ (fin de chaîne)

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

La raison pour laquelle votre séparation fonctionne correctement est pas partagé utilise regex et « $ » est un caractère spécial pour regexes (Drekka)

+0

est correcte. La raison pour laquelle votre split ne fonctionne pas correctement est que split utilise regex et "$" est un caractère spécial pour les regex. – drekka

3

La division prend une expression régulière et $ est un caractère spécial (fin de chaîne), vous devez donc y échapper avec une barre oblique inverse \. Quoi qu'il en soit, c'est aussi un personnage spécial, cette fois-ci à Java, il faut donc y échapper aussi. Le code final est:

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

Il suffit de remplacer votre ligne:

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

avec:

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

J'espère que votre problème est résolu ...