java诡异的String.split()方法
Reference
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)
正文
先贴函数签名。
public String[] split(String regex, int limit);
第二个参数可以不传(被重载),默认是0.
参数limit的用法:
- 正数:匹配符最多被用limit-1次
- 0:匹配符可以用任意多次,但是最后被匹配出来的空串会被省去
- 负数:匹配符可以用任意多次
举例:
“boo:and:foo”
regex | limit | result |
---|---|---|
o | -1 | { “b”, “”, “:and:f”, “”, “” } |
o | 0 | { “b”, “”, “:and:f” } |
不过还有一个比较诡异的地方。用\s+去匹配是会匹配出空串的。
输入
String s = " hello world! ";String[] words = s.split("\\s+", -1);for (int i = 0; i < words.length; i++)System.out.print(words[i]+"|");
输出结果是|hello|world!||
可以看到。前后各有一个空串。我觉得这个是非常不可思议的地方。我之前一直觉得用\s+匹配多个空格,不会出现空token的情况。而且hello和world之间有多个空格,这个是被split完美解决了的。
防止出问题,以后还是多trim()一下。
java诡异的String.split()方法相关推荐
- Java在使用时需要注意那些问题_java使用String.split方法时要注意的问题
在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果. 我们看jdk doc中说明 public String[] split(String rege ...
- Java String split方法性能分析
近期笔者分析一段在线代码的性能时,发现Java String类中split()方法的性能和网上一些帖子的描述并不相同,是以记录澄清. Java String split方法到底有没有使用正则表达式? ...
- SWIFT MX报文基础函数与Java语言中String的方法对照理解
SWIFT MX报文基础函数与Java语言中String的方法对照理解 前言 一.SWIFT是什么? 二.SWIFT MX是什么? 二.报文基础函数与Java语言中String的方法对照表 总结 前言 ...
- Java中的String.hashCode()方法可能有问题?
过去几天,我一直在浏览Reddit上的一篇文章.这篇文章看得我要抓狂了.文章指出,Java中的String.hashCode()方法(将任意长度的字符串对象映射成32位int值)生成的哈希值存在冲突. ...
- String.split()方法介绍
String.split()方法我们会经常使用到,这个方法可以将一个字符串分割成数组,但是最近在使用的时候发现一个问题,代码如下: String str1 = "1";String ...
- 关于Java里面的String.getBytes()方法
关于Java里面的String.getBytes()方法 Java里面的String类型的编码方式是Unicode,根据你项目字符串的编码方式无关,这是写死的.但是如果你jvm平台使用的是GBK编码方 ...
- c#中的string.split()方法
本帖最后由 刘赛 于 2013-4-26 16:32 编辑 C#的String.Split 方法String.Split 方法有6个重载函数: 程序代码 1) public string[] Spli ...
- java String split 方法丢弃末尾的空白字符问题
问题描述 在使用 split 方法时,末尾的空白字符会被丢弃,但是实际上这个行字符可能是一个文件的内容,没个字段内容是否为空都需要记录,此时 split的此无参数方法就不再适用了. 情景再现 Stri ...
- 【java】String.split方法limit详解
regex会切割掉,不会包含在string[]子穿中 API: public String[] split(String regex) public String[] split(String reg ...
最新文章
- 避开移入移出事件内部div干扰事件,e是function(e)的e
- Android 侧划菜单
- 第十六届智能车竞赛总决赛线上比赛赛道设计
- css 垂直居中的几种方式
- 洛谷 P1206 [USACO1.2]回文平方数 Palindromic Squares
- kubernetes(八)问题排查
- Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结
- LOAM_velodyne学习(一)
- extern __shared__
- 关于json格式字符串解析并用mybatis存入数据库
- 一个符合SEO优化标准的网站应具备哪些特征?
- 系统架构师学习笔记-操作系统(三)
- C++ union 公共体
- 导出时间字段的处理_如何快速将发票信息导出到excel表格中?
- AcWing基础算法课Level-2 第四讲 数学知识
- podspec文件介绍
- 【TWVRP】基于matlab遗传和粒子群算法求解带时间窗的车辆路径规划问题【含Matlab源码 1037期】
- 关闭计算机的方式有哪些,关机快捷键有哪些?电脑Windows快捷关机最全方法图文详解...
- php 生成思维导图,JavaScript如何生成思维导图(mindmap)
- 独家:程序员必备Java API和类搜索辅助工具发布
热门文章
- 藏在正则表达式里的陷阱
- 响应式Spring Cloud初探
- HTML中嵌套的子frame如何访问父页面中的函数?
- cannot be cast to org.springframework.web.accept.ContentNegotiationManager
- RandomStringUtils工具类
- webpack dev server 和 sublime text 配合时需要注意的地方
- ThinkPHP实现静态缓存和动态缓存
- Python 进阶_闭包 amp; 装饰器
- python:多线程
- css 行内元素设置宽高