Java split 分隔空值无法得到的解决方式

 更新时间:2020年10月20日 09:10:02   作者:BoomLee  
这篇文章主要介绍了Java split 分隔空值无法得到的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

应用场景

String s1="A,B,"

将s1 以逗号分隔,转换成集合 正常的转换结果如下

[A,B]

逗号后的空不再进行分隔,若想逗号后的空即转换为三个元素的集合

List<String> list = Arrays.asList(s1.split(",",-1));

只需要在跟个条件后,添加-1 即可 ,转换的结果如下

[A, B, ]

补充知识:Java Sting类关于split处理空串以及截取最大数

java的String类中有个split方法,这个是我们经常使用到的。

split一共有两个方法,

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

②. public String[] split(String regex )

先说第一个,有两个参数,api上的例子:

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

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

此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。

数组中的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。

limit 参数控制模式应用的次数,因此影响结果数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后项将包含超出最后匹配的定界符的所有输入。

如果 n 为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度。如果 n 为零,则模式将被应用尽可能多的次数,数组可有任何长度,并且结尾空字符串将被丢弃。

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

Regex Limit 结果

: 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) 产生与以下表达式完全相同的结果:

Pattern.compile(regex).split(str, n)

参数:

regex - 定界正则表达式

limit - 结果阈值,如上所述

返回:

字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组

抛出:

PatternSyntaxException - 如果正则表达式的语法无效

其实上面说的已经很详细了,说到底就是比常用的多了一个limit参数。但是参数怎么用。

1.当参数为整数的时候,只需要截取前几个,需要几个截取几个,这个不用多说。

String line = "aa,bb,cc,dd,,,,";

System.out.println(line.split(",",6).length);

输出结果为6,limit参数指定几个,输出几个,最多为8个

2.当参数为零的时候,和split()一样,截图尽可能多的字符串(其实不是最多的)。

String line = "aa,bb,cc,dd,,,,";

System.out.println(line.split(",",0).length);

输出结果为4

3.当参数为负的时候,即使后面有空的串,也会输出到最大

String line = "aa,bb,cc,dd,,,,";

System.out.println(line.split(",",-1).length);

输出结果为8

可能大家都看出来了,以逗号切割的一般都是CSV格式的文件,当遇到读取每一行记录的时候,不加参数,就会遇到这种情况,读取不完整,然后CSV数据格式验证的时候,验证数据不合法。

String line = "aa,bb,cc,dd,,,,";  
String mi[] = (line).split(sp); 
if (mi.length != 8)return; 

实际结果 mi.length = 4,所以通不过验证直接非法数据

②其实就是当limit参数为0的时候获得的结果,将api的介绍放上来,就不多说了。

public String[] split(String regex)

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

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

例如,字符串 "boo:and:foo" 产生带有下面这些表达式的结果:

Regex 结果

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

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

参数:

regex - 定界正则表达式

返回:

字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组。

抛出:

PatternSyntaxException - 如果正则表达式的语法无效

以上这篇Java split 分隔空值无法得到的解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot集成PageHelper及使用方法详解

    SpringBoot集成PageHelper及使用方法详解

    这篇文章主要介绍了SpringBoot集成PageHelper及使用方法详解,PageHelper 是一个开源的 Java 分页插件,它可以帮助开发者简化分页操作,本文提供部分相关代码,需要的朋友可以参考下
    2023-10-10
  • Java可视化之实现文本的加密和解密

    Java可视化之实现文本的加密和解密

    这篇文章主要介绍了Java可视化之实现文本的加密和解密,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java SPI 机制知识点总结

    Java SPI 机制知识点总结

    在本篇文章里小编给大家整理的是一篇关于Java SPI 机制知识点总结内容,需要的朋友们可以参考下。
    2020-02-02
  • Java中super和this的用法详解

    Java中super和this的用法详解

    这篇文章主要介绍了Java中super和this的用法详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • spring+maven实现发送邮件功能

    spring+maven实现发送邮件功能

    这篇文章主要为大家详细介绍了spring+maven实现发送邮件功能,利用spring提供的邮件工具来发送邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 使用VS Code进行java开发与调试的图文教程

    使用VS Code进行java开发与调试的图文教程

    这篇文章主要介绍了如何在计算机上安装JDK、VSCode以及Java扩展包,并详细说明了配置Java运行环境的过程,还展示了如何在VSCode中新建一个Java项目,需要的朋友可以参考下
    2025-02-02
  • Java使用sleep方法暂停线程Thread

    Java使用sleep方法暂停线程Thread

    这篇文章介绍了Java使用sleep方法暂停线程Thread,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • Spring的注解简单介绍

    Spring的注解简单介绍

    这篇文章主要介绍了Spring的注解简单介绍,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • SpringBoot实现邮件发送的示例代码

    SpringBoot实现邮件发送的示例代码

    电子邮件是—种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。本文详细为大家介绍了SpringBoot实现发送电子邮件功能的示例代码,需要的可以参考一下
    2022-04-04
  • Spring Boot配置动态更新问题

    Spring Boot配置动态更新问题

    这篇文章主要介绍了Spring Boot配置动态更新问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论