作为java程序员天天都用它,它都是我们的饭碗,但是它的坑实在太多……所以现在想写java神坑系列,今天写第一个坑 string的split方法。
split是大家常用的一个方法。但是它有好多坑……
大家都知道它的参数是正则表达式,正则的特殊符号要转义,如果不转义话,嘿嘿ing…………
大家做个题:如下
System.out.println("a".split(".").length);
System.out.println("a".split("|").length);
System.out.println("a".split("{").length);
System.out.println("a".split("}").length);
如果你给的答案是
0
2
报错
1
那么说明你用的是jdk1.7。
如果你给的答案是
0
1
报错
1
那么说明你用的是jdk1.8。
就问坑不坑………………………… java之神坑…………
如果两个都不是那你要打打基础了……………………
同样的代出不同的结果………………查到了1.7的源码这个和Pattern split的limit 有关 public String[] split(CharSequence input, int limit)
1.8的源码我没去看,大家可以自己去看看。运行结果如图
========================================第一个神坑就写到这里==============================
附上正则特殊字符的split jdk1.7
ps
"a".split(".").length有人说这个是神坑,我相说这个不是,在正则中.代表所有。这句话是以全部的字符作分隔符当然是0.
这个让我想起"sss".replaceAll(".", "") 有人说这个也是坑,我想说这个也不是,这句话是把所有的字符都替换为空……。