2016-05-03 6 views
0

TDD、Test Driven DevelopmentプロジェクトのSQLファイルのマクロ処理があります。split()メソッド初期の文字列をチョップするための複雑さ

- >は、私が使用しているマクロマーカー

の\ P {スペース} + POSIX標準正規表現分割されます。

sqlLine.split("\\p{space}+"); 

この場合、マクロは空白の後に開始する必要があります。私の分裂だけが働く。したがって、私はNoSpaceInMacroStartupケースを処理するために追加しました。私がそれをしている間に、スプリットがSystem.out.println()に関して異なった振る舞いをしていることと、直接指数付けをすることが分かった。

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]) 

スプリットが異なる動作をする理由を知りたいと思います。

私はデバッグモードで次の行を検査しますが、

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

それは

[0] = ""

[1] = "このため分散の

" 内で、私が使用している、 -

macroToken = macroToken.replaceFirst("-->",""); 

split()の直接インデックスとその実行時の動作について、誰かの説明をしてください。

+0

" の中で、私は私が実現していた質問自体をフレーム間実行時の分散がないということです。それは、同じ変数への代入のために起こっていました。次回はマクロマーカーが見つかりませんでした。マクロマーカーはマークアップ ' - >'としてロジックとして使用されていました。したがって、インデックス[1]は失敗します。 –

答えて

0

次の行が実行されると、文字列トークンmacroTokenが上書きされます。 split()方法は、JavaのStringをチョップするために使用されている場合したがって

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

それは、あなたが空の文字列があるだろう、System.out.prinln()

との質問に答えるために再びインデックスの同じセットを取得することができませんでした一致する文字列の場合はsplit()で使用されます。ここでは、文字列を開始し、一致している " - >" したがって、

を[0] = ""

を[1] = "

関連する問題