2012-09-10 26 views
5

Ich versuche, die Gruppen in einer Zeichenfolge in einem Array zu speichern, so dass ich sie in einzelnen Variablen verwenden kann, wenn ich muss. Dafür benutze ich split, aber aus irgendeinem Grund bekomme ich nur die vollständige Zeichenfolge an der ersten Position im Array: ultimate_array [0]. Wenn ich ultimate_array [1] verwenden möchte, bekomme ich eine Ausnahme wie "out of bounds". Hast du eine Idee, was mache ich falsch?Split funktioniert nicht richtig

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

Das Argument zu 'split()' sollte eine Regex sein, also '$' entspricht "Ende der Zeichenfolge" –

Antwort

2

Sie benötigen $ (Ende der Zeichenkette)

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

Der Grund Ihrer Spaltung nicht richtig funktioniert, ist, dass Split verwendet regex und "$" ist ein Sonderzeichen für reguläre Ausdrücke (Drekka)

+0

's Antwort ist korrekt. Der Grund dafür, dass Ihr Split nicht korrekt funktioniert, ist, dass Split regex verwendet und "$" ein Sonderzeichen für Regexes ist. – drekka

3

Die Spaltung nimmt einen regulären Ausdruck und $ ist ein Sonderzeichen (Ende der Zeichenfolge), so dass Sie es mit Backslash \ entkommen müssen. Jedenfalls ist es auch ein besonderer Charakter, dieses Mal in Java, also musst du ihm auch entkommen. Der letzte Code ist:

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

Ersetzen Sie einfach Ihre Linie zu entkommen:

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

mit:

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

Ich hoffe, dass Ihr Problem gelöst ist ...