2016-10-17 42 views
0
String parts[] = formattedString.split("\\:"); 
String partA = parts[0]; 
String partB = parts[1]; 

我試圖在「:」符號之前和之後拆分一個字符串。
例如,「之前:之後」的作品,但在「之前:」之後沒有任何內容像「之前:」給我一個例外。我試圖在parts[1]中檢查null,但它仍然會拋出異常。如何解決在java中的字符串拆分索引超出界限的異常?

+3

檢查結果數組的長度。 –

+0

這裏的問題與正則表達式無關。這是你不理解數組。我也打賭你沒有想過像「Beginning:Middle:End」這樣的字符串。 – jpmc26

+0

如果你知道有一種可能性,不要認爲索引1處會有東西。 – ChiefTwoPencils

回答

1

您需要檢查數組的長度,以確定在引用索引1之前是否存在索引1處的任何東西

if(parts.length > 1) { 
    //do something with it 
} 
1

拆分方法給出的數組的長度由可拆分元素的數量決定。

這意味着,如果你沒有第二個元素,數組的長度將是1,而不是2

您應檢查數組的長度,以確定是否有第二個元素。

1
String parts[] = formattedString.split("\\:"); 
String partA = parts[0]; 
String partB = parts[1]; 

想要訪問索引0和1的上述代碼,請首先檢查數組部分是否具有這些索引。在訪問這些索引之前,請檢查數組的長度。

相關問題