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