`
cjm0000000
  • 浏览: 32668 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java之split result array 长度问题

    博客分类:
  • JAVA
阅读更多

      今天遇到一个BUG,给定数据"a,b,c,d,e“,用"a,b,c,d,e“.split(",")函数生成的数组长度是5。但是,如果给定的数组是“a,b,c,d,”,这种格式,情况就不一样了,我之前一直认为"a,b,c,d,“.split(",")的数组长度是5,但是事实上,长度是4

 

参考代码片段:

 

String a = "a,b,c,d,";
String b = "a,b,c,d,e";
System.out.println(a.split(",").length);
System.out.println(b.split(",").length);

 

于是查看String.split的源代码:

public String[] split(String regex) {
    return split(regex, 0);
}

 

找到方法说明里面有这么一段:

写道
Splits this string around matches of the given regular expression.

This method works as if by invoking the two-argument split method with the given expression and a limit argument of zero. Trailing empty strings are therefore not included in the resulting array.

  

标记红色的这句话告诉我,在末尾的空字符串不会被包含在结果数组。现在应该很清楚了,可能是我愚笨了,理解错误了,在此标记一下。

 

那么如果遇到“a,b,c,d,”这种数据,想要让返回的数组包含最后的空字符串,即数组长度是5,有没有办法呢?

接着查看JDK的源码,找到split的重载方法:

 

 public String[] split(String regex, int limit) {
	return Pattern.compile(regex).split(this, limit);
    }

 

这个方法说明中有一段话:

 写道

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.

 这段话告诉我有两种方式可以实现我的需求:

“a,b,c,d,”.split(",",-1);

“a,b,c,d,”.split(",",5);

 limit要么是负数,要么大于等于result array的长度。

 

分享到:
评论

相关推荐

    JAVA_split_用法

    ### JAVA_split_用法详解 在Java编程语言中,`String`类提供了多个实用的方法来处理字符串,其中`split()`方法是用于将一个字符串分割成字符串数组的一种常见方式。此方法利用正则表达式(Regular Expression)作为...

    Java中Split的用法及注意

    Java 中 Split 的用法及注意 Java 中的 Split 方法是通过正则表达式来拆分字符串的,它可以将一个字符串分割为子字符串,然后将结果作为字符串数组返回。该方法的语法为 `stringObj.split(regex, [limit])`,其中 `...

    java中的split的用法

    ### Java中的split方法详解 #### 一、引言 在Java编程中,字符串处理是非常常见的需求之一。`String`类提供了多种方法来处理字符串,其中`split`方法因其灵活性和强大的分割功能而被广泛使用。本文将深入探讨`...

    split-array:将数组拆分为特定长度的数组

    分割数组 将数组拆分为特定长度的数组安装$ npm install --save split-array用法const splitArray = require ( 'split-array' ) ;splitArray ( [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ] , 2 ) ;//=> [['a', 'b'], ['c...

    Java字符串分隔方法split实践

    `split()`方法位于`java.lang.String`类中,它的基本语法如下: ```java public String[] split(String regex) ``` 这里的`regex`参数是一个正则表达式,用于定义分隔字符串的规则。正则表达式是一种强大的文本...

    java的String[] split 示例

    在Java编程语言中,`String`类提供了许多用于操作字符串的方法,其中之一便是`split`方法。这个方法在处理文本数据时极为有用,特别是在需要根据特定的分隔符将字符串分割成多个子串的情况下。下面,我们将深入探讨`...

    sp.zip_split_use to split array

    This is used to split array

    Javasplit.java

    文件目录转json格式

    java split()使用方法解析

    Java split() 函数使用方法解析 Java split() 函数是 Java 编程语言中一个非常常用的字符串分割函数,它可以将一个字符串按照指定的分隔符分割成多个子字符串,并将其存储在一个字符串数组中。下面我们将详细介绍 ...

    java_spliter.zip_java split_java spliter_分割文件

    通过研究这个程序,初学者可以更深入地了解Java I/O系统,并且能够应用这些知识去解决实际问题,如处理大量数据或优化文件传输。同时,这也是一个很好的实践案例,展示了如何将理论知识转化为实际的编程技能。

    js java 判断中文,英文的混合长度

    通过以上介绍,我们可以看到在JavaScript和Java中,都有多种方法可以用来处理中文和英文混合的字符串长度计算问题。选择哪种方法取决于具体的应用场景和技术限制。无论是JavaScript还是Java,核心思想都是通过对字符...

    java之学习正则split分割的典型案例

    首先要把字符串分割开用正则中的split方法 * 2,定义一个和字符串数组一样大小的int数组 * 3,把字符串数组转换成数字字符 * 4,排序,用sort方法 * 5,拼接成新的字符串

    java的split方法使用示例

    Java中的`split()`方法是String类的一个非常重要的成员函数,它用于将字符串按照指定的分隔符进行切割,返回一个字符串数组。这个方法在处理文本数据时尤其有用,例如解析CSV格式的数据、处理用户输入或者从日志文件...

    java 中用split分割字符串,最后的空格等不被拆分的方法

    在Java编程语言中,`split()` 是一个非常实用的字符串方法,它允许我们将字符串按照指定的分隔符进行拆分。然而,在某些情况下,当分隔符是空格或者制表符(\t),并且字符串末尾有连续的空格或制表符时,`split()` ...

    java split()方法实用案例

    java split()方法实用案例

    Java的split方法使用详解

    Java的`split`方法是String类的一个非常重要的成员函数,用于根据指定的分隔符将字符串分割成多个子字符串,并返回一个字符串数组。这个方法在处理数据时非常有用,例如解析CSV格式的数据或者处理带有固定分隔符的...

    浅析Java中Split函数的用法技巧

    1. **空字符串分隔**:如果使用空字符串(`""`)作为分隔符,`split()`方法会在每个字符之间进行分割,导致返回的数组长度等于字符串的长度加1。 2. **连续分隔符**:如果字符串中存在连续的分隔符,`split()`方法...

    split this is a split java develop utils package

    4. **限制结果数量**:`split()`方法还可以接受一个可选的限制参数,限制返回的子字符串数组的长度。例如,`"a,b,c,d".split(",", 2)`将返回`["a,b", "c,d"]`,因为限制了结果最多为两个元素。 5. **自定义分隔符**...

    input_input().split()_input_split_mapReduce_java_

    在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组...

Global site tag (gtag.js) - Google Analytics