在String中,split方法如下:

可见,split的核心在于Pattern.compile(regex).split(this, limit);

Java提供Pattern,Matcher用于支持正则,可以看一个例子:

运行结果是:

0,1

||

3,4

|ab|

7,8

|cef|

8,9

||

11,12

|kk|

13,14

|a|

需要注意的是:

通过Pattern给定一个模式(regex),Matcher可以不断(find)匹配文本,并能找到每

一个匹配上的内容的开始(start),结束(end)索引【结束索引说白了,就是start+匹配

文本的长度】。

subSequence(begin,end)是一个“包头不包尾”的方法

问题:

在上面的while中,我们能到达的最大的索引处,就是最后一个end,而注意到很有可能

这个end之后还有内容,那么该如何处理呢?

如果一个正则将文本split成了几部分,我们只需要一部分呢?

如果分成的部分中有“”空字符串,split又是如何处理的?

我们可以带着这些问题来看看源码:

首先来看,limit对matchLimited的影响:

limit < 0 或者 split(regex)等价于split(regex,0)  ==>  matchLimited:false

limit > 0                           ==>  matchLimited:true

其实,while的意思就是说,如果limit>0的话,matchList只加入有限的内容。

如果整个文本没有匹配上,那么返回一个长度为1,内容为其本身的数组。

如果limit为0,那么会将最后匹配的那些空串删除掉直至非空串为止在返回结果。

java 读取split_Java报错系列——split相关推荐

  1. java 读取文件 报错 java.io.FileNotFoundException

    一般来说就两个问题: 1 路径写错了 2 对应路径下没有要找的文件 解决方法: 绝大部分情况都是路径写错了... 路径的错误: 1)最好用绝对路径 2)如果是win10的话,看看格式里的反斜杠对不对( ...

  2. Poi读取Excle报错 java.util.zip.ZipException: invalid stored block lengths

    一:Poi读取Excle报错  java.util.zip.ZipException: invalid stored block lengths 系统中需要导出excle签收单,excle模板是预设好 ...

  3. java poi读取excel报错Your InputStream was neither an OLE2 stream, nor an OOXML stream

    错误描述 java poi读取excel报错Your InputStream was neither an OLE2 stream, nor an OOXML stream 楼主是读取的另存为的exc ...

  4. Flink读取Kafka报错:KafkaException ByteArrayDeserializer is not an instance Deserializer

    1.视界 2.背景 做flink读取kafka报错 org.apache.kafka.common.KafkaException: Failed to construct kafka consumer ...

  5. 记录---ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法

    记录-ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法 先po代码: //1.读取配置文件中的基本信息I ...

  6. 源码编译报错系列之:Fatal error compiling: 无效的标记: --release -> [Help 1]

    源码编译报错系列之:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (defau ...

  7. cv2.dnn读取模型报错

    cv2.dnn读取模型报错 D:\ProgramData\Miniconda3\python.exe D:/project/detect/face/yolov5-face-landmarks-open ...

  8. 使用cmd打开java文件,报错:“错误,编码GBK的不可映射字符”

    使用cmd打开java文件,报错:"错误,编码GBK的不可映射字符" 今天使用EditPlus写了一个小程序,用cmd运行时报错--"错误,编码GBK的不可映射字符&qu ...

  9. java exec执行tar_用java调用rpmbuild 报错,同一条命令直接复制到终端却能运行

    用java调用rpmbuild 报错,同一条命令直接复制到终端却能运行. 命令如下: rpmbuild --define "_topdir /var/lib/jenkins/workspac ...

最新文章

  1. 拥抱AI技术,赋能智慧工业
  2. sd 卡驱动--基于高通平台
  3. 软件工程之快速原型模型
  4. redis简单队列java_使用Redis的简单消息队列
  5. Jenkins主从节点配置
  6. 这是一场数学、数学、数学的盛会
  7. 阿里云IoT将举办第三届极客创新挑战赛,吸引全球极客参赛
  8. Android极光推送
  9. 想了解任务型对话机器人,我们先从自然语言理解聊起
  10. java 无符号运算_java位运算和无符号运算
  11. php 模拟客户端访问,PHP通过伪造和模拟客户端COOKIE登陆来采集抓取远程网址
  12. 全网销售额超 2.67 亿!德施曼连续 5 年蝉联双11全网智能锁销冠
  13. 【数据库】SQLITE3 加密3
  14. 数据挖掘导论课后习题答案-第四章
  15. mysql 数据库遭遇 Loki 加密勒索病毒数据恢复
  16. [渝粤题库]西北工业大学刑法
  17. [数据分析] 5W2H分析方法
  18. html5 video 不拉伸,HTML 5视频拉伸
  19. html水调歌头实验总结,水调歌头教学课堂总结
  20. 人教版计算机三年级教学目标,人教版小学三年级数学下册教学计划

热门文章

  1. iOS UIlabel文字排版(改变字间距行间距)分类
  2. xml与java对象转换 -- XStreamAlias
  3. S2SH CRUD 整合
  4. 强烈建议使用国外DNS解析域名,解决访问速度和某些访问故障!
  5. DataTable RowFilter 过滤数据
  6. Flume数据传输事务分析[转]
  7. Java实现各种排序算法
  8. javascript setTimeout 和 setInterval 区别
  9. Spring学习笔记(三)
  10. Springboot整合thymeleaf模板