Java使用split(「.」)出錯拋出ArrayIndexOutOfBoundsException
情景:
容易被忽略的轉義異常: 項目中使用split截取圖片時拋出了一個截取代碼後以下:java
@Test public void testSpit() { String split[] = "123.jpg".split("."); for (int i = 0; i <= split.length; i++) { System.out.println(split[i]); } }
執行上段代碼拋出如下異常:正則表達式
java.lang.ArrayIndexOutOfBoundsException: 0 atink.lit.service.PicService$$FastClassBySpringCGLIB$$7fcf9455.invoke(<generated>) atorg.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) atorg.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)
解決方法:
查尋api發現,split()方法接受的是正則表達式,因此傳入的」.」就變成了正則表達式的關鍵字,表示除換行符以外的任意字符。因此,須要轉義」.」或」[.]」。spring
@Test public void testSpit() { String split[] = "123.jpg".split("\\."); for (int i = 0; i <= split.length; i++) { System.out.println(split[i]); } }
完事 : )api