2012-06-09 20 views
0

這個問題讓我沮喪了幾天。我正在使用字符串拆分來查找字符串的後半部分。這裏是我的代碼:ArrayIndexOutOfBounds當使用string.split時

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說指數一個是無效的。我不知道爲什麼發生這種情況,所以任何幫助將不勝感激!

+0

我可以得到你的代碼不會編譯。你能否提供[SSCCE](http://www.sscce.org)?順便說一句,歡迎來到Stack Overflow! :) – kentcdodds

+0

我試着重新創建你已經給出的和'pieces'的值(順便提一句,這應該是'String [] peices',而不是'String pieces []')是一個空的字符串數組。這意味着沒有任何東西能夠被你給出的before [x]分割,這是有道理的。你是否試圖在'before [x]'之後獲取所有內容?如果是這樣的話,一個'substring'調用對你來說會更好。 – kentcdodds

+2

'String pieces []'與'String [] pieces'相同。 – aioobe

回答

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

+0

+1,'Pattern.quote'是一種方式! – Premraj