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