使用String.split()方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。
场景一:
1、字符串中存在 “ . ” 或 “ | ” 或 “ * ” 或 “ + ” 或 “ : ” 或 “ ^ ” 或 “ 的时候,需要通过转义符进行转译,因为直接写的话系统是无法识别的。
如:
String.split(".") 或者 String.split("|") 或者 String.split("*") 或者 String.split("+")
报错:
java.lang.ArrayIndexOutOfBoundsException: 0
at com.ruyi.pdf.util.PDFUtil.separatePath(PDFUtil.java:677)
at com.ruyi.pdf.util.PDFUtil.imageWaterMark(PDFUtil.java:591)
at com.ruyi.pdf.util.PDFUtil.main(PDFUtil.java:38)
解决:
String.split("\\ .") 或者 String.split("\\ |") 或者 String.split("\\ *") 或者 String.split("\\ +")
具体可以查询 JDK1.6 或 JDK1.8 中 ,java.lang包中的String.split(String regex)方法中的规则表达式
场景二
如果在一个字符串中有多个分隔符,可以用 “ | ” 作为连字符;
比如:
“acount=? and uu =? or n=?”
把三个都分隔出来,可以用
String.split("and | or");