[每天一个知识点]11-Java语言-String.split
来源:互联网 发布:单片机外部中断程序 编辑:程序博客网 时间:2024/05/21 10:23
今天继续讲String类,集中几天时间把String这个最常用的类型过一遍。
String的split方法有2个
String[]
split(String regex)
String[]
split(String regex, int limit)
split(String regex)是我们最常用的,但是有2点往往被我们忽视了。第1点是split的入参是个正则表达式,也就是说分隔符不仅仅只能是一个字符,也不仅仅是一种字符序列,可以是任何正则表达式可以匹配的内容,比如任意数值分割的字母或者任意字母分割的数字或者任意符号分割的单词等等。第2点是split(String regex)分割字符串后会trim掉末尾的空字符串,所以见过了无数用分隔符将若干字段拼成一个字符串然后在解析时报ArrayIndexOutOfBoundsException的代码。
为了解决这个问题,可以使用apache的commons-lang3中的StringUtils的split系列方法,这些方法提供了更加单一的功能和更高的效率(比如简单的按照单一字符分割,StringUtils有约5-10倍的性能提升),针对常用的场景是更简单的解决方案。
对于少量的字符串解析工作,如果不愿意引入外部的第三方库,那么可以使用第2个split方法,split(String regex, int limit)。limit参数分为3种情况,大于0时字符串最多被分解为limit部分,例如:a,b,c如果limit为2将被分割为"a", "b,c",limit可以大于实际可以分割的数量,在前面的例子中limit为100也不会报错。当limit为0的时候就是split(String regex)的效果(实际上split(String regex)就是split(regex, 0))。当limit小于0时,不管值是多少都代表保留末尾的空字符串。
所以为了解决前面的问题,可以用split(regex, -1)或者确切知道字符串是n个字段拼成的,使用split(regex, n)调用。当然,从精确表达意图方面讲,通常split(regex, -1)更精确一些。
最后给个简单的例子加深一下印象
String str1 = "a,b,.c,d...";String[] array1 = str1.split("[.,]", -1);
- [每天一个知识点]11-Java语言-String.split
- [每天一个知识点]4-Java语言String.format
- [每天一个知识点]21-Java语言-MultiCatch
- [每天一个知识点]30-Java语言-asList
- [每天一个知识点]18-Java语言-在switch中接受String类型
- [每天一个知识点]6-Java语言-char和code point
- [每天一个知识点]9-Java语言-CharSequence是什么
- [每天一个知识点]10-Java语言-正则表达式使用
- [每天一个知识点]14-Java语言-字符串拼接
- [每天一个知识点]15-Java语言-字符串连接
- [每天一个知识点]17-Java语言-@Override注解
- [每天一个知识点]20-Java语言-菱形运算符
- [每天一个知识点]22-Java语言-二进制字面值
- [每天一个知识点]13-String对象与常量的老生常谈
- 一个类似Java String[] split(String regex)的VC++函数【】
- [每天一个知识点]29-C语言-printf的格式符*
- 每天一个知识点(1)
- Java String split实例
- SNMPv3原理-SNMPv3协议框架
- Codeforces Round #286 (Div. 2) D.Mr. Kitayuta's Technology
- CGGeometry
- 基于飞思卡尔i.MX 6Quad Sabrelite开发板的触摸屏调试
- OSSAMS - Open Source Security Assessment Management System
- [每天一个知识点]11-Java语言-String.split
- hdu1010 Tempter of the Bone(dfs)
- 蓝屏设置
- opencv 检测鼠标的点击和移动
- C++ 应用程序性能优化:内存池
- 多线程——Task
- Jquery操作radio,checkbox,select表单操作实现代码
- WinDebug 虚拟机
- Android App层通过JNI从驱动获取Input Event