有时候,我们的一些业务数据,有些定义的是按某个分割符分割数据,然后一行一行的,处理这种数据时候,要务必小心,因为它简单,不用维护类似json格式的数据或者一个对象,而是直接通过下标位置来访问数据的,相信这种场景大家也都接触过,当然弊端也是显而易见的,如果位置放错或者代码使用不当,都会造成一些问题,所以使用这种方式时,一会都会约定一些内容,比如行分隔符,列分割符等,下面来看一个小问题,先看下面一段代码:
String line1="1#2#3";//期待长度3,结果是3
System.out.println(line1.split("#").length);
String line2="1#2#3##";//期待长度5,实际结果是3 , 有问题?
System.out.println(line2.split("#").length);
运行完,你会发现第二段代码的数组的长度竟然与你想的不一致?为什么?我们来看
官网api解释:
/**
The limit parameter controls the number of times the pattern is applied and therefore affects the length of the resulting array. If the limit n is greater than zero then the pattern will be applied at most n - 1 times, the array's length will be no greater than n, and the array's last entry will contain all input beyond the last matched delimiter. If n is non-positive then the pattern will be applied as many times as possible and the array can have any length. If n is zero then the pattern will be applied as many times as possible, the array can have any length, and trailing empty strings will be discarded.
*/
public String[] split(String regex,int limit)
如果limit是负数,那么它会尽可能匹配到所有的这个数组的个数,如果是0那么尽可能匹配出现的元素,但是空字符串将会被就丢弃,但我们不希望它丢弃,因为丢弃就意味着有业务字段缺失,所以来看下最终的写法:
String line3="1#2#3##";//正确的写法
System.out.println(line3.split("#",-1).length);
分享到:
相关推荐
JAVA_split_用法,split详解,记得好评哦
Java中Split的用法及注意, 本文只是大概说了一下java中split的用法,其他方面要你们去查看了。
文件目录转json格式
java中的split的用法,里面包含几个很好的实例,很好的学习资料
NULL 博文链接:https://bijian1013.iteye.com/blog/2334967
java split()方法实用案例
java的String[] split 示例
java写的一个分割文件的小程序,对于学习java的I/O有帮助。
主要介绍了java split()使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组...
this is a split of java developmentthis is a split of java development
主要介绍了java split用法的相关资料,并附实例代码,帮助大家学习参考,需要的朋友可以参考下
首先要把字符串分割开用正则中的split方法 * 2,定义一个和字符串数组一样大小的int数组 * 3,把字符串数组转换成数字字符 * 4,排序,用sort方法 * 5,拼接成新的字符串
主要详细介绍了Java的split方法使用说明,十分的细致全面,有需要的小伙伴可以参考下。
表格中的某个值用户填写为1800(XSSFWorkbook解析为Double类型),后台解析为1800.0,但我只想保留1800对应数据库的字典表,所以就转换在split了然后问题就来了: java.lang.ArrayIndexOutOfBoundsException: 0 纳尼?...
深入浅出JAVASwing程序设计1-100_split_2.rar深入浅出JAVASwing程序设计1-100_split_2.rar深入浅出JAVASwing程序设计1-100_split_2.rar深入浅出JAVASwing程序设计1-100_split_2.rar
在java.lang包中也有String.split()方法,与.net的类似,都是返回是一个字符型数组,但使用过程中还有一些小技巧。以下我就为大家介绍,需要的朋友可以参考下
主要介绍了java的split方法使用示例,需要的朋友可以参考下
对c#中常用函数split的使用,非常实用