相信大家都经常使用String 的split方法,但是大家有没有遇到下面的这种情况:

大家想想下面的代码执行结果是什么

public static voidmain(String[] args) {//TODO Auto-generated method stub

String str1= "a,b,c,,,a";

String str2= "a,b,c,,,";

String str3= "a,b,c, , ,";

String[] s1= str1.split(",");

String[] s2= str2.split(",");

String[] s3= str3.split(",");

System.out.println("str1长度:"+s1.length);

System.out.println("str2长度:"+s2.length);

System.out.println("str3长度:"+s3.length);

}

执行结果:

为什么会出现这样的结果呢,查找API发现了解决方法

解决方法:

通过查看API我们发现我们常用的split方法默认传递的是0,现在解决str2输出空的解决方法是传递的第二个参数为负数,即可

public static voidmain(String[] args) {//TODO Auto-generated method stub

String str1= "a,b,c,,,a";

String str2= "a,b,c,,,";

String str3= "a,b,c, , ,";

String[] s1= str1.split(",");

String[] s2= str2.split(",",-1);

String[] s3= str3.split(",",-1);

System.out.println("str1长度:"+s1.length);

System.out.println("str2长度:"+s2.length);

System.out.println("str3长度:"+s3.length);

}

经查找API发现在String类中,存在两个split重载方法

1.public String[] split(String regex)

根据给定正则表达式的匹配拆分此字符串。

该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。

例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果:

Regex结果

:

{ "boo", "and", "foo"  }

o

{ "b", "", ":and:f" }

参数:regex - 定界正则表达式返回:字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的抛出:

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

根据匹配给定的正则表达式来拆分此字符串。

此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。

limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

例如,字符串 "boo:and:foo" 使用这些参数可生成以下结果:

RegexLimit结果

:

2

{ "boo", "and:foo" }

:

5

{ "boo", "and", "foo" }

:

-2

{ "boo", "and", "foo" }

o

5

{ "b", "", ":and:f", "", "" }

o

-2

{ "b", "", ":and:f", "", "" }

o

0

{ "b", "", ":and:f" }

调用此方法的 str.split(regex, n) 形式与以下表达式产生的结果完全相同:

参数:regex - 定界正则表达式limit - 结果阈值,如上所述返回:字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的抛出:

java split 顺序_Java的split方法说明相关推荐

  1. java addall 顺序_Java LinkedList addAll()方法

    Java LinkedList addAll()方法 java.util.LinkedList.addAll(Collection extends E> c) 方法用于将指定集合中的所有元素附加 ...

  2. java split 坑_java String split 踩坑记

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

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

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

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

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

  5. java secretkey用法_Java SecretKeyFactory.generateSecret方法代码示例

    本文整理汇总了Java中javax.crypto.SecretKeyFactory.generateSecret方法的典型用法代码示例.如果您正苦于以下问题:Java SecretKeyFactory ...

  6. java io顺序_Java顺序IO性能

    java io顺序 许多应用程序将一系列事件记录到基于文件的存储中,以供以后使用. 从日志记录和审核,直到在事件源设计或其紧密相关的CQRS中保留事务重做日志,这都可以是任何东西. Java具有多种方 ...

  7. java set 包含_Java Set.contains()方法:判断Set集合是否包含指定的对象

    Java 集合类中的 Set.contains() 方法判断 Set 集合是否包含指定的对象.该方法返回值为 boolean 类型,如果 Set 集合包含指定的对象,则返回 true,否则返回 fal ...

  8. java 发送邮件 菜鸟_Java发送邮件的方法

    1.需要的jar包 2.具体实现方法 1.设置邮箱主机.需要认证.邮箱协议 Properties pro=new Properties(); pro.setProperty("mail.ho ...

  9. java 虚函数_Java的虚方法

    虚方法出现在Java的多态特性中, 父类与子类之间的多态性,对父类的函数进行重新定义.如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding).在Java中,子类 ...

最新文章

  1. 2017-2-23 C#基础 中间变量
  2. Web离线应用解决方案——ServiceWorker
  3. 《斗罗大陆》引入阿里云云原生数据库 PolarDB 游戏体验更流畅
  4. java 面试题三十二 mysql查询面试题
  5. Python3实现快速排序 通俗易懂
  6. SSM框架的搭建学习(1)---MyBatis的环境搭建
  7. LeetCode 46. 全排列(回溯)
  8. C / C++ 经典代码和常考类型
  9. springboot controller 访问 404
  10. [hadoop新实战4]hadoop完全分布式安装序列(支持ubuntu和redhat)
  11. Android 自定义相机
  12. DHTML Scriptlets 容器对象参考手册
  13. tensorflow——deeplabv3+训练cityscapes数据集(未完待续)
  14. BZOJ 5106 [CodePlus2017]汀博尔
  15. matlab阅读怎么放大镜,matlab局部放大
  16. windows系统安全加固
  17. 八大地图API开发平台大比拼
  18. ubuntu(17):ubuntu下wps缺失字体百度网盘永久链接与安装方法
  19. c语言发票的编码,增值税普通发票(折叠票)的发票代码有几位?
  20. 百度地图-设置地图最小、最大级别

热门文章

  1. [c语言]——跳水比赛
  2. 基于组件的业务模型---实现框架
  3. 初步学习C#网络编程
  4. 手把手教你简易上手GitHub(教程)
  5. 开展网络口碑传播应该注意哪些方面?
  6. 《JavaScript高级程序设计》(第4版)阅读笔记(二十五)
  7. 跟李宁老师学Python视频课程(15):Python TCP与UDP编程-李宁-专题视频课程
  8. 识别图片上文字的软件
  9. springboot整合shiro,mybatis-plus实现用户角色,权限管控.(完整demo)
  10. java list 时间排序吗_java中的list时间排序