今天遇到一个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.
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编程语言中,`String`类提供了多个实用的方法来处理字符串,其中`split()`方法是用于将一个字符串分割成字符串数组的一种常见方式。此方法利用正则表达式(Regular Expression)作为...
Java 中 Split 的用法及注意 Java 中的 Split 方法是通过正则表达式来拆分字符串的,它可以将一个字符串分割为子字符串,然后将结果作为字符串数组返回。该方法的语法为 `stringObj.split(regex, [limit])`,其中 `...
### Java中的split方法详解 #### 一、引言 在Java编程中,字符串处理是非常常见的需求之一。`String`类提供了多种方法来处理字符串,其中`split`方法因其灵活性和强大的分割功能而被广泛使用。本文将深入探讨`...
分割数组 将数组拆分为特定长度的数组安装$ npm install --save split-array用法const splitArray = require ( 'split-array' ) ;splitArray ( [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ] , 2 ) ;//=> [['a', 'b'], ['c...
`split()`方法位于`java.lang.String`类中,它的基本语法如下: ```java public String[] split(String regex) ``` 这里的`regex`参数是一个正则表达式,用于定义分隔字符串的规则。正则表达式是一种强大的文本...
在Java编程语言中,`String`类提供了许多用于操作字符串的方法,其中之一便是`split`方法。这个方法在处理文本数据时极为有用,特别是在需要根据特定的分隔符将字符串分割成多个子串的情况下。下面,我们将深入探讨`...
This is used to split array
文件目录转json格式
Java split() 函数使用方法解析 Java split() 函数是 Java 编程语言中一个非常常用的字符串分割函数,它可以将一个字符串按照指定的分隔符分割成多个子字符串,并将其存储在一个字符串数组中。下面我们将详细介绍 ...
通过研究这个程序,初学者可以更深入地了解Java I/O系统,并且能够应用这些知识去解决实际问题,如处理大量数据或优化文件传输。同时,这也是一个很好的实践案例,展示了如何将理论知识转化为实际的编程技能。
通过以上介绍,我们可以看到在JavaScript和Java中,都有多种方法可以用来处理中文和英文混合的字符串长度计算问题。选择哪种方法取决于具体的应用场景和技术限制。无论是JavaScript还是Java,核心思想都是通过对字符...
首先要把字符串分割开用正则中的split方法 * 2,定义一个和字符串数组一样大小的int数组 * 3,把字符串数组转换成数字字符 * 4,排序,用sort方法 * 5,拼接成新的字符串
Java中的`split()`方法是String类的一个非常重要的成员函数,它用于将字符串按照指定的分隔符进行切割,返回一个字符串数组。这个方法在处理文本数据时尤其有用,例如解析CSV格式的数据、处理用户输入或者从日志文件...
在Java编程语言中,`split()` 是一个非常实用的字符串方法,它允许我们将字符串按照指定的分隔符进行拆分。然而,在某些情况下,当分隔符是空格或者制表符(\t),并且字符串末尾有连续的空格或制表符时,`split()` ...
java split()方法实用案例
Java的`split`方法是String类的一个非常重要的成员函数,用于根据指定的分隔符将字符串分割成多个子字符串,并返回一个字符串数组。这个方法在处理数据时非常有用,例如解析CSV格式的数据或者处理带有固定分隔符的...
1. **空字符串分隔**:如果使用空字符串(`""`)作为分隔符,`split()`方法会在每个字符之间进行分割,导致返回的数组长度等于字符串的长度加1。 2. **连续分隔符**:如果字符串中存在连续的分隔符,`split()`方法...
4. **限制结果数量**:`split()`方法还可以接受一个可选的限制参数,限制返回的子字符串数组的长度。例如,`"a,b,c,d".split(",", 2)`将返回`["a,b", "c,d"]`,因为限制了结果最多为两个元素。 5. **自定义分隔符**...
在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组...