今天开发,遇到了一个比较意外的问题。
1、问题描述:
String.split(”.”);//以点作为分隔符
结果得到的数组引用时,老报下标越界错误,后来测试也发现长度就是为零。
2、问题分析:
开始时,怀疑此种分隔符是一种特殊的字符,莫非是要转义。于是加了两个斜杠,即:String.split(”//.”),测试通过。
3、总结如下:
1)、是点和|作为分隔符,出现此种错误,因为在在split(表达式)中,表达式其实是一个正则表达式,.和|是一种有特殊含义的字符,如果要使用此种字符作为分隔符,要使用转义字符加以转义方可得到正确结果。
2)如果想要使用多个分隔符,可以使用|分隔开,比如使用 @和?作为分隔符,即为String.split(”@|?);
3)使用String.split(””)时,往往容易忽略的一个地方就是分割的字符数组中,示例:“a/b/c”.split(”/”)的长度不是6,而是3,因为分割后,java中会从后面开始检查所得的数组,把空的去掉,返回非空的3个数组。
例:
System.out.println("abcd0@|#asdf1@|#kkkw22@|#".split("@//|#")[1]);
输入为asdf1 , 注意split里面“//|”转意
符号“.”,“|”,“$”是正则表达式特殊符号,要作转义,包括还很多,不一一举例!使用时注意!