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
参数!