情况1
String a = " ";
String[] b = a.split(",");
System.out.println(b.length);
打印1.为什么?
案例2
String a = ",";
String[] b = a.split(",");
System.out.println(b.length);
打印0.为什么?
老实说,我在这里不知所措
最佳答案
String.split的文档中提到了此行为:
This method works as if by invoking the 07001 with the given expression and a limit argument of zero. Trailing empty strings are therefore not included in the resulting array.
你的第一个例子应该给出一个包含一个包含空格的字符串的数组包含空格的字符串不为空,因此它包含在结果中.
您的第二个示例将给出一个包含大量空字符串的数组,但这些数据不包含在文档中提到的结果数组中.
至于为什么Java设计者决定在限制为零时删除尾随空字符串是一个好主意 – 我不知道.大多数其他编程语言/平台不这样做.我认为这是一个“陷阱” – 这个功能并不像大多数人所期望的那样有效.