Ich habe Macro Processing für meine SQL-Datei in einem der TDD, - Test Driven Development-Projekt.split() Methode Komplikationen zum Zerhacken der ursprünglichen Zeichenfolge
-> das Makro Marker
I \ p {Raum} + Posix Standard regex Split verwendet haben.
sqlLine.split("\\p{space}+");
In diesem Fall muss Macro nach einem Leerzeichen beginnen. Nur dann funktioniert meine Trennung. Daher habe ich hinzugefügt, um NoSpaceInMacroStartup
Fall zu behandeln. Während ich das tue, beobachtete ich Split verhält sich anders in Bezug System.out.println()
und für die direkte Indizierung.
macroToken = macroToken.split("-->")[1]; //gives the first token after markup
//But While I examine
//gives the first token after markup
System.out.println("[0]->"+macroToken.split("-->")[0])
//And next index throws exception
System.out.println("[1]->"+macroToken.split("-->")[1])
Ich würde gerne wissen, warum Split verhält sich anders.
Während ich Inspektion für die folgende Zeile im Debug-Modus zu tun.
macroToken = macroToken.split ("->") [1];
Es ist
[0] = ""
[1] = "Within"
Aufgrund dieser Varianz, die ich verwendet habe, -
macroToken = macroToken.replaceFirst("-->","");
Jemand bitte erklären Sie das Verhalten von split() für die direkte Indizierung und deren Laufzeitverhalten.
Während ich die Frage Rahmen selbst ich erkannt hatte, ein bisschen, dass es keine Laufzeitvarianz gibt. Es war wegen der Zuweisung derselben Variable an sich selbst passiert. Für das nächste Mal, es fand nicht die Makro-Markierung, die als eine Logik als Markup '->' verwendet wurde. So schlägt der Index [1] fehl. –