2016-05-03 6 views
0

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.

+0

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. –

Antwort

0

Sobald die folgende Zeile ausgeführt wird, wurde das Zeichenfolge-Token macroToken überschrieben.

macroToken = macroToken.split("-->")[1]; 

daher, dass, sind Sie wieder den gleichen Satz von Index erhält nicht in der Lage für System.out.prinln()

Und die Beantwortung der Frage, ob split() Methode verwendet wird, um den String in Java zu hacken, wird es leerer String sein in Fall der übereinstimmenden Zeichenfolge, die in split() verwendet wird. Hier werden Sie passenden String Start "->" daher

[0] = ""

[1] = "Within"

Verwandte Themen