Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串#拆分方法混乱_Java_String_Split - Fatal编程技术网

Java 字符串#拆分方法混乱

Java 字符串#拆分方法混乱,java,string,split,Java,String,Split,我尝试了以下代码: String str =",,,,,"; String str2=",,,,, "; System.out.println(str.split(",").length); System.out.println(str2.split(",").length); 输出为: 0 6 唯一的区别是str值是,,,,(不带空格)和str2值是,,,,(带空格) 任何人都可以解释这一点。因为在String#split()方法中,数组结果中将不包括尾随的空字符串 String str

我尝试了以下代码:

String str =",,,,,";
String str2=",,,,, ";
System.out.println(str.split(",").length);
System.out.println(str2.split(",").length);
输出为:

0
6
唯一的区别是
str
值是
,,,,
不带空格)和
str2
值是
,,,,
空格)

任何人都可以解释这一点。

因为在
String#split()
方法中,数组结果中将不包括尾随的空字符串

String str =",,,,,";
String str2=",,,,, ";
由于
str.split(“,”
应该给你
[,,]
,它返回
[]
,因为你有一个尾随的空字符串

与str2.split(“,”)不同,它将给您

[, , , , , ]
          ^ //note the whitespace element 
你可以试试

System.out.println(",,,,, ,,,,".split(",").length);
这仍然会为您提供输出:
6
,它是
[,,]
,因为在空白之后,您所拥有的只是尾随的空字符串(因此不包括在数组结果中)


注意:您可以通过指定限制来保留尾随的空字符串:

System.out.println(str.split(",", -1).length);
                                   ^ limit
输出:
6


检查以了解更多详细信息

此方法的工作原理类似于使用给定表达式和零限制参数调用双参数拆分方法。因此,结果数组中不包括尾随的空字符串取自

如果第二个字符串是
“,,,”
,那么长度应该是4


希望这能解释清楚。

如果你想保留尾随的空字符串,你可以使用
str.split(“,”,-1)
。啊,我从来不知道
split()
方法可以有
2
参数!