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的用法:

  1. 正数:匹配符最多被用limit-1次
  2. 0:匹配符可以用任意多次,但是最后被匹配出来的空串会被省去
  3. 负数:匹配符可以用任意多次

举例:
“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()方法相关推荐

  1. Java在使用时需要注意那些问题_java使用String.split方法时要注意的问题

    在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果. 我们看jdk doc中说明 public String[] split(String rege ...

  2. Java String split方法性能分析

    近期笔者分析一段在线代码的性能时,发现Java String类中split()方法的性能和网上一些帖子的描述并不相同,是以记录澄清. Java String split方法到底有没有使用正则表达式? ...

  3. SWIFT MX报文基础函数与Java语言中String的方法对照理解

    SWIFT MX报文基础函数与Java语言中String的方法对照理解 前言 一.SWIFT是什么? 二.SWIFT MX是什么? 二.报文基础函数与Java语言中String的方法对照表 总结 前言 ...

  4. Java中的String.hashCode()方法可能有问题?

    过去几天,我一直在浏览Reddit上的一篇文章.这篇文章看得我要抓狂了.文章指出,Java中的String.hashCode()方法(将任意长度的字符串对象映射成32位int值)生成的哈希值存在冲突. ...

  5. String.split()方法介绍

    String.split()方法我们会经常使用到,这个方法可以将一个字符串分割成数组,但是最近在使用的时候发现一个问题,代码如下: String str1 = "1";String ...

  6. 关于Java里面的String.getBytes()方法

    关于Java里面的String.getBytes()方法 Java里面的String类型的编码方式是Unicode,根据你项目字符串的编码方式无关,这是写死的.但是如果你jvm平台使用的是GBK编码方 ...

  7. c#中的string.split()方法

    本帖最后由 刘赛 于 2013-4-26 16:32 编辑 C#的String.Split 方法String.Split 方法有6个重载函数: 程序代码 1) public string[] Spli ...

  8. java String split 方法丢弃末尾的空白字符问题

    问题描述 在使用 split 方法时,末尾的空白字符会被丢弃,但是实际上这个行字符可能是一个文件的内容,没个字段内容是否为空都需要记录,此时 split的此无参数方法就不再适用了. 情景再现 Stri ...

  9. 【java】String.split方法limit详解

    regex会切割掉,不会包含在string[]子穿中 API: public String[] split(String regex) public String[] split(String reg ...

最新文章

  1. 避开移入移出事件内部div干扰事件,e是function(e)的e
  2. Android 侧划菜单
  3. 第十六届智能车竞赛总决赛线上比赛赛道设计
  4. css 垂直居中的几种方式
  5. 洛谷 P1206 [USACO1.2]回文平方数 Palindromic Squares
  6. kubernetes(八)问题排查
  7. Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结
  8. LOAM_velodyne学习(一)
  9. extern __shared__
  10. 关于json格式字符串解析并用mybatis存入数据库
  11. 一个符合SEO优化标准的网站应具备哪些特征?
  12. 系统架构师学习笔记-操作系统(三)
  13. C++ union 公共体
  14. 导出时间字段的处理_如何快速将发票信息导出到excel表格中?
  15. AcWing基础算法课Level-2 第四讲 数学知识
  16. podspec文件介绍
  17. 【TWVRP】基于matlab遗传和粒子群算法求解带时间窗的车辆路径规划问题【含Matlab源码 1037期】
  18. 关闭计算机的方式有哪些,关机快捷键有哪些?电脑Windows快捷关机最全方法图文详解...
  19. php 生成思维导图,JavaScript如何生成思维导图(mindmap)
  20. 独家:程序员必备Java API和类搜索辅助工具发布

热门文章

  1. 藏在正则表达式里的陷阱
  2. 响应式Spring Cloud初探
  3. HTML中嵌套的子frame如何访问父页面中的函数?
  4. cannot be cast to org.springframework.web.accept.ContentNegotiationManager
  5. RandomStringUtils工具类
  6. webpack dev server 和 sublime text 配合时需要注意的地方
  7. ThinkPHP实现静态缓存和动态缓存
  8. Python 进阶_闭包 amp; 装饰器
  9. python:多线程
  10. css 行内元素设置宽高