JAVA String的split方法小结-程序员宅基地

技术标签: JAVA  java  字符串  

1.split(String regex, int limit)
参数说明:
regex 表示字符串分割的模式,包括分隔符和正则表达式;
limit 表示控制模式应用的次数,会影响所得数组的长度。

limit>0:模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入;
limit<0:模式将被应用尽可能多的次数,而且数组可以是任何长度;
limit=0:模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

2.split(String regex) 本质上就是limit为0时的情况,详见JDK源代码:

public String[] split(String regex) {
        return split(regex, 0);
}
 

3.场景测试

测试样例1:limit设置为3

      @Test
    void caseOne(){
        String str = "a|b|c||";
        String[] arr = str.split("\\|", 3);
        System.out.println(arr.length);
        System.out.println(Arrays.toString(arr));
    }

输出结果
3
[a, b, c||]

备注:数组长度为3,最后一项为c||,即arr[2]为"c||"。

测试样例2:limit设置为-1

     @Test
    void caseTwo(){
        String str = "a|b|c||";
        String[] arr = str.split("\\|", -1);
        System.out.println(arr.length);
        System.out.println(Arrays.toString(arr));
    }

输出结果
5
[a, b, c, , ]
备注:数组长度为5,最后两项是空字符串,即arr[3]为"",arr[4]为""。


测试样例3:limit设置为0

    @Test
    void caseThree(){
        String str = "a|b|c||";
        String[] arr = str.split("\\|", 0);
        System.out.println(arr.length);
        System.out.println(Arrays.toString(arr));
    }

输出结果
3
[a, b, c]
备注:因结尾空字符串将被丢弃,所以数组长度为3,此时如果调用arr[3],就会报数组越界异常(java.lang.ArrayIndexOutOfBoundsException: 3)。

测试样例4:不带limit参数

    @Test
    void caseFour(){
        String str = "a|b|c||";
        String[] arr = str.split("\\|");
        System.out.println(arr.length);
        System.out.println(Arrays.toString(arr));
    }

输出结果
3
[a, b, c]
备注:因结尾空字符串将被丢弃,所以数组长度为3,此时如果调用arr[3],就会报数组越界异常(java.lang.ArrayIndexOutOfBoundsException: 3)。

测试样例5:结尾为空格字符时的情况

 @Test
    void caseFive(){
        String str = "a|b|c| | ";
        String[] arr = str.split("\\|");
        System.out.println(arr.length);
        System.out.println(Arrays.toString(arr));
    }

输出结果
5
[a, b, c,  ,  ]
备注:此时arr[3]可以正常调用。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yu2002fu/article/details/106124886

智能推荐

java基础之 sun认证之二-程序员宅基地

第三章 对象名词 对象: 类: 一类属性相同的对象 属性:是什么样 方法:能做什么(C 中叫作函数)对象: 声明:Student s ; 这时我们只是说明s是一个能够指向Student类型的引用(相当于C++中的指针),并没有创建一个对象。 所以我们此时不能对s做任何操作。 初始化

android 读取sd卡图片,bitmap,byte[]互转,bitmap,base64互转。_bitmap如何获取sd卡的照片_雨中漫步7的博客-程序员宅基地

1.android 读取sd卡图片 /** * * @param path 图片路径 * @return */ public static Bitmap getBitmap(String path) { Bitmap bitmap = null; try { FileInputStream fis = new FileInputStream(path); bitmap =_bitmap如何获取sd卡的照片

Fabric1.4 九、使用couchdb作为节点存储_fabric 用了couchdb吗-程序员宅基地

1、 Fabric使用couchdb的优势Fabric的状态存储支持可插拔的模式,兼容LevelDB、CouchDB等存储。Fabric使用CouchDB作为状态存储与其他数据库相比具有较多优势:CouchDB是一种NoSQL解决方案。它是一个面向文档的数据库,其中文档字段存储为键值映射。字段可以是简单的键值对、列表或映射。除了支持类似LevelDB的键控/合成键/键范围查询之外,Couc..._fabric 用了couchdb吗

• Vim-程序员宅基地

Vim转载自 http://wiki.hotoo.me/Vim.htmlVim 简介 精准广告投放 教程 选项(Options) 编码(Encoding) 字体(fonts) 映射(Mapping) 外观(Theme,Color Scheme) Syntax Indent & Fo..._if &ft != "diff

树莓派开始,玩转Linux8:规划小能手_树莓派开始玩转linux百度云-程序员宅基地

树莓派开始,玩转Linux8:规划小能手树莓派是一款低成本的电脑,因此它常充当小型的服务器,定期执行某些任务。笔者平时就会在局域网下接入树莓派,做一些数据备份和上传的工作。这时任务内容和执行时间已经明确。我们想把任务内容和执行时间预先写入树莓派中,让树莓派自动执行。这样用户就不用手动操作树莓派了。为了满足这一需求,Linux系统提供了经典的cron工具。1.用cron规划任务:cron是Linux系统下常用的任务规划软件,可以在cron中要求系统在特定的时间执行特定的任务。cron在系统中有一个运行着_树莓派开始玩转linux百度云

mongodb 导出txt_MongoDB导出软件-程序员宅基地

MongoToFile是一款强大MongoDB导出工具,此软件可以帮助用户连接MongoDB数据库,轻松完成数据转换,让用户更加方便的导出数据,而且支持CSV 、TXT、SQL、JSON、XML、html等多种格式的文件,有需要的朋友赶紧下载吧!MongoToFile软件功能1、从收集出口功能,在收集的文件中选择一些导入到软件中。2、从查询出口功能,查询本地文件并在查询的文件中将其导入。3、出口类..._mongodb 4.0数据导出软件

随便推点

emr问题处理-程序员宅基地

--通过his病历号查询emr中对应的患者IDselect a.id, a.* from vhis_inpatientinfo a where a.PATIENT_NO='0001059171' --556457--通过患者ID找出患者所有的病历集合IDselect * from rcd_inpatient_record_set where inpatient_id='5564...

ENSP实验_ensp配置路由器r1的ip地址-程序员宅基地

代码】ENSP实验。_ensp配置路由器r1的ip地址

secureCRT/telnet工具使用技巧(二):设置快捷登录_crt配置快捷方式登录-程序员宅基地

引导语:我们再使用crt登录有用户名密码设备的时候,遇到需要多次重新登录且用户名密码较为复杂情况下使用快捷登录会提高效率。操作步骤1)右键点击图中所示一栏,选择“New Button"2)格式是“用户名\r密码\r”,颜色格式按自己喜欢选择,点击OK即可;快捷登录左键点击一下OK即可..._crt配置快捷方式登录

时间序列分析----灰度模型-程序员宅基地

灰度预测法是一种对含有不确定因素的系统的预测方法,灰色系统是位于白色系统和黑色系统之间的一种系统。白色系统指的是一个系统内部的特征是完全已知的,使用者不仅知道系统的输入-输出关系,还知道实现输入-输出的具体方式,譬如函数表达式,微分方程的变化公式,或者物理学的基本定律。比方说牛顿第二定律F=ma, 使用者只需要知道物体的质量和加速度,就可以通过牛顿第二定律求出所使用的力F的具体值。或者说当物体的..._灰度模型

Eric6的基础使用方法_eric6使用-程序员宅基地

Eric6是Python编程语言的IDE程序,功能之强大,绝不输于Python平台下的任何IDE程序,占用内存低运行速度快足以令Eric6藐视群雄,最可贵的是与PyQt5结合的更是天衣无缝,简直就是开发GUI程序的绝配。PyQt5是赖以Python编程语言的外部GUI开发语言,其夯实的底层基础与强大的可视化界面设计让PyQt5成为Python语言GUI开发的佼佼者,更新速度之快,开发GUI程序的速度_eric6使用

SpringBoot 2.x ShardingSphere分库分表实战-程序员宅基地

一. 项目需求在之前我做项目的时候,数据量比较大,单表千万级别的,需要分库分表,于是在网上搜索这方面的开源框架,最常见的就是mycat,sharding-sphere,最终我选择后者,用它来做分库分表比较容易上手。二. 简介sharding-sphere官网地址: shardingsphere.apache.org/ShardingSphere是一套开源的分布式数据库中间件解决方案组..._spring boot sharding-sphere 多数据源