在工作中有个代码块用到String.split()来进行截取特殊字符遇到的坑
String str = "||";
String[] strs = str.split("\\|");
System.out.println(strs.length);
最后结果输出是 0
起初我以为是\\|的原因
后来看到还可以用Pattern.quote("|")代替
String str = "||";
String[] strs = str.split(Pattern.quote("|"));
System.out.println(strs.length);
结果发现输出还是 0
莫非是截取的有问题了?明明他是有|的啊?
如果有值的话是可以截取到的,但是只有2个正常来讲不应该是3个么?
后来发现String还有一个截取方法
split(String regex, int limit)
原来加limit可以解决这个截取固定长度的问题
当limit大于数组长度或者是非正数时,则是以最大长度进行截取的
当limit小于数组长度或者为0时,则是以limit长度来进行截取的(当然这里的值都是空值,如果都不是空置就看情况)
split(String regex) 方法,其实也就等同于split(String regex,0)方法,把结尾的空字符串丢弃