ArrayIndexOutOfBounds使用string.split时

时间:2012-06-09 05:34:25

标签: java regex string split indexoutofboundsexception

这个问题让我几天感到沮丧。我正在使用字符串拆分来查找字符串的后半部分。这是我的代码:

   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>

出于某种原因,我收到ArrayIndexOutOfBounds异常,split说索引为1无效。我不知道为什么会这样,所以任何帮助都会非常感激!

2 个答案:

答案 0 :(得分:2)

如果你试图让字符串的后半部分使用piece.split(before[x])[1]并抛出异常,那么显然这意味着你的字符串数组piece.split(before[x])没有第二个元素。你应该做的是尝试使用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

答案 1 :(得分:1)

String.split使用正则表达式将String拆分为多个部分。 “before [x]”包含常规特殊字符(即“\”),因此您需要转义这些特殊字符。 请参考http://www.regular-expressions.info/reference.html获取特殊字符列表