split操作是出镜率非常高的一个方法, 但是我们使用中通常会使用两个类提供的split方法, 他们在入参类型一样, 但是效果却有一些差别, 稍不注意容易踩坑.

java.lang.String#split

String提供了两个重载方法:

public String[] split(String regex, int limit)

public String[] split(String regex)

regex参数指定用于分割的正则表达式; limit用于限定分割次数, 小于等于0时表示不限制全部切割.

org.apache.commons.lang.StringUtils#split

StringUtils提供了四个重载方法:

String[] split(String str)

String[] split(String str, char separatorChar)

String[] split(String str, String separatorChars)

String[] split(String str, String separatorChars, int max)

str即待分割的字符串, separatorChar和separatorChars指定分割符, 注意这里是字符串本身而不是正则. max等效于上面的limit用于限定分割次数.

区(有)别(坑)

相邻分隔符的处理不同String#split会把临近的分割符合并处理, 而StringUtils#split不会.

String str = "a,,b";

String[] arr1 = StringUtils.split(str, ",");

System.out.println(Arrays.toString(arr1) + " @ " + arr1.length);

// [a, b] @ 2

String[] arr2 = str.split(",");

System.out.println(Arrays.toString(arr2) + " @ " + arr2.length);

// [a, , b] @ 3

空字符内容的处理不同StringUtils#split会丢掉分割出来的空字符, 而String#split不会.

String str = ",,a,,b,,";

String[] arr1 = StringUtils.split(str, ",");

System.out.println(Arrays.toString(arr1) + " @ " + arr1.length);

// [a, b] @ 2

String[] arr2 = str.split(",");

System.out.println(Arrays.toString(arr2) + " @ " + arr2.length);

// [, , a, , b] @ 5

java split 坑_java String split 踩坑记相关推荐

  1. java split函数的用法,java拆分字符串_java中split拆分字符串函数用法

    摘要 腾兴网为您分享:java中split拆分字符串函数用法,中信期货,掌上电力,星球联盟,淘集集等软件知识,以及韩剧精灵,每日英语听力vip,龙卷风收音机,优衣库,中国平煤神马集团协同办公系统,光晕 ...

  2. tabbar角标 小程序_【沃行课堂】恭喜你遇到“坑”,小程序踩坑指南

    上周我们的开发小哥哥带领我们一起领略了开发中遇到的各种问题,以及基于SaaS模式的平台技术架构及实现.本周我们换个方向,由高级开发工程师秋哥带领大家共同探讨下小程序开发中踩过的坑.秋哥会从公司的几个小 ...

  3. java split 特殊字符_Java中split()分割字符串时对特殊符号的处理

    String类型的对象在用split()方法进行字符分割的时候常常会遇到用特殊字符进行分割的情况.由于split()是用正则实现的分割,所以当遇到一些特殊字符时,就需要使用一些特殊处理.以下是对一些常 ...

  4. java split 顺序_Java的split方法说明

    相信大家都经常使用String 的split方法,但是大家有没有遇到下面的这种情况: 大家想想下面的代码执行结果是什么 public static voidmain(String[] args) {/ ...

  5. java contains 效率_java String contains逻辑的优化

    有一个"AAA,BBB"格式的字符串组成的List,有一个字符串SSS 现在想遍历List,如果字符串SSS中包含了AAA,并且包含了BBB,则返回ture.否则将List全部遍历 ...

  6. 坑!mongodb安装踩坑坑坑坑!

    MongoDB安装踩坑坑坑坑! ​ 鉴于网上有很多手把手的教程,我就不ctrl cv了,主要说一下我参考了哪些教程以及踩的坑 ​ 进官网进了半天进不去,爬了个楼梯才上去 ​ 进去之后,迅雷没会员根本下 ...

  7. java竖线分割_Java String类的Split以竖线作为分隔符

    版权声明:本文为博主原创文章,转载请写明出处.https://blog.csdn.net/wo541075754/article/details/50668160 问题 Java中String类的Sp ...

  8. 报错java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String解决踩坑

    java.lang.ClassCaption: java.lang.Long cannot be cast to java.lang.String 问题背景 service传参调用mapper,报错: ...

  9. java file rename 失败_java File renameTo 踩坑---windows vs linux

    Java File renameTo 方法 Windows Linux 下的差异: window : 1 在关闭源文件之前,进行重命名操作,返回 false,重命名失败: 2 目标文件存在时,返回fa ...

最新文章

  1. Extjs4.2+webAPI+EF实现分页以及webapi的数据传值
  2. CygWin / 安装软件包的方法
  3. 《好未来编程题》n个数里最小的k个
  4. java 冒泡排序的三种写法_冒泡排序的三种实现(Java)
  5. python字典更改元素_python – 返回带有一个已更改元素的字典
  6. 关于SQL Server的日期时间数据类型
  7. ubuntu 给执行文件添加快捷方式
  8. 迁移应用程序到.NET Framework 4.5:弃用类型与新特性
  9. 论计算机应用技术对企业信息化的影响
  10. php自动加载 依赖,php自动加载
  11. 手把手教你如何建立U盘免疫文件夹
  12. win10开卓越性能模式方法
  13. 银河麒麟桌面系统V10解决微信无法登录
  14. Ubuntu零基础教学-Ubuntu下如何创建.txt记事本文件
  15. html 调用es2015模块,给大家分别介绍一下CommonJS和ES2015的import
  16. 【pwnable.kr】 passcode
  17. VO,DTO,BO,POJO,PO的概念介绍
  18. 教大家用python画皮卡丘的脸
  19. 爱好-C语言秘钥产生器
  20. python动画篮球大小_篮球比赛动画直播数据api接口示例

热门文章

  1. bootbox.js
  2. 2017前端技术大盘点
  3. 自己做的一个登录页面,纯代码!
  4. vue使用iview Timeline 时间轴不显示问题
  5. android eclipse 配置 在项目右击选择properties
  6. 【antd】输入控件的思想
  7. 使用echarts时,鼠标首次移入屏幕会闪动,屏幕会出现滚动条
  8. 设计撑百万并发的数据库架构
  9. CODEVS 1205 单词反转
  10. linux线程基础篇----线程同步与互斥