0

この問題は、私を数日間イライラさせ続けています。文字列分割を使用して、文字列の後半を見つけています。これが私のコードです:

   String pieces[] = piece.split(before[x]);
   piece = piece.split(before[x])[1];

デバッグモードでは、私はそれを決定しましたpiece =

<area shape="circle" coords="329,152,13" href="#g35" alt="" onmouseover="return overlib\('&lt;b>Southeast False Creek&lt;/b>&lt;br>215 West 1st Avenue' , SNAPX, 20, SNAPY, 20\);" onmouseout="return nd\(\);"/>

before[x] =

<area shape="circle" coords="329,152,13" href="#g35" alt="" onmouseover="return overlib\('&lt;b>

何らかの理由で、1 のインデックスが無効であるというArrayIndexOutOfBounds例外が発生します。splitなぜこれが起こっているのかわからないので、どんな助けでも大歓迎です!

4

2 に答える 2

2

文字列の後半を使用しpiece.split(before[x])[1]て例外をスローしようとしている場合は、明らかに、文字列配列piece.split(before[x])に 2 番目の要素がないことを意味します。あなたがすべきことはpiece.split(Pattern.quote(before[x]))、配列内の文字列の数を使用して確認することです。1 より大きい場合は、 を使用して文字列の後半を取得できますpiece.split(Pattern.quote(before[x]))[1]

詳細については、これをお読みくださいhttp://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html#quote(java.lang.String )

于 2012-06-09T05:53:47.497 に答える
1

String.split は、正規表現を使用して文字列を分割します。「before[x]」には通常の特殊文字 (つまり「\」) が含まれているため、これらの特殊文字をエスケープする必要があります。特殊文字のリストについては、 http://www.regular-expressions.info/reference.htmlを参照してください

于 2012-06-09T07:41:19.490 に答える