博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中split的坑,用的时候一定要小心
阅读量:6471 次
发布时间:2019-06-23

本文共 1256 字,大约阅读时间需要 4 分钟。

hot3.png

有的时候总觉得split很好用,屡试不爽,但他偶尔也会给你一点小惊喜。

1.一些特殊业务场景,对自己拼接出来的字符串使用split分割,假设我们已经知道了这个长度,也许我们会这么写。

String ids = "1,2,3,";// 对,你没有看错,我故意这么写的,根据我们的设想这里一定是四个值拼接的,即时有空字符串,使用split神器也可以成功分割出长度为4的数组。// 所以我这么写了。String[] idArr = ids.split(",");String idA = idArr[0];String idB = idArr[1];String idC = idArr[2];String idD = idArr[3];// 好的...你突然发现挂了,抛出数组下标越界了。// 新手,或者不常用split的人总是会认为idArr的长度应该是4,实际上他只有3。是的这就是java中的split,因为你在别的地方用过的split不是这样的,比如javascript中的split,如果是这个例子的话,那么毫无疑问他的长度是4,最后一个为""空字符串。// 实际上java的split有一个重载方法,是两个参数的,ok第二个参数就是你期望数组的长度,当然如果你写100,那么你也不可能得到长度为100的数组在本例当中,他是个limit的概念。String[] idArr = ids.split(",",4); // 这有写长度是4String[] idArr = ids.split(",",100); // 这有写长度也是4String[] idArr = ids.split(",",3); // 这有写长度是3String[] idArr = ids.split(",",2); // 这有写长度是2// ok看到这里大家应该明白了,所以java的split默认是根据指定的字符去截取,然后末尾如果都是空字符串,那么全部舍去,除非你限定长度。// 而javascript确实默认没有去处理空字符串的问题。

2.使用字符作为分隔符

"2|33|4".split("|")出来的结果是:""2|33|4奇怪吧,不过注意看一下API说明还是知道原因的.所以正常的写法是这样的:①、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");②、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");“.”和“|”都是转义字符,必须得加"\\";③、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“a=1 and b =2 or c=3”,把三个都分隔出来,可以用String.split("and|or");

转载于:https://my.oschina.net/sunchenbin/blog/633022

你可能感兴趣的文章
java单例模式深度解析
查看>>
什么是堆、栈?
查看>>
【学习笔记】阿里云Centos7.4下配置Nginx
查看>>
VuePress手把手一小時快速踩坑
查看>>
dnsmasq安装使用和体验
查看>>
学习constructor和instanceof的区别
查看>>
Vijos P1881 闪烁的星星
查看>>
ABP理论学习之领域服务
查看>>
Qt 控制watchdog app hacking
查看>>
让所有IE支持HTML5的解决方案
查看>>
RDD之五:Key-Value型Transformation算子
查看>>
Windows 搭建Hadoop 2.7.3开发环境
查看>>
python操作mysql数据库实现增删改查
查看>>
percona 5.7.11root初始密码设置
查看>>
Cognitive Security的异常检测技术
查看>>
Impress.js上手 - 抛开PPT、制作Web 3D幻灯片放映
查看>>
生活杂事--度过十一中秋
查看>>
Pyrex也许是一个好东西
查看>>
Java内部类总结
查看>>
WINFORM WPF字体颜色相互转换
查看>>