字符串,拆分.需要帮助理解

Jam*_*sev 5 java string split

情况1

String a = "         ";
String[] b = a.split(",");
System.out.println(b.length);
Run Code Online (Sandbox Code Playgroud)

打印1.为什么?

案例2

String a = ",,,,,,,,,,,,";
String[] b = a.split(",");
System.out.println(b.length);
Run Code Online (Sandbox Code Playgroud)

打印0.为什么?

老实说,我在这里不知所措

Mar*_*ers 12

String.split的文档中提到了此行为:

此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样.因此,结尾的空字符串不包含在结果数组中.

你的第一个例子应该给出一个包含一个包含空格的字符串的数组 包含空格的字符串不为空,因此它包含在结果中.

您的第二个示例将给出一个包含大量空字符串的数组,但这些数据不包含在文档中提到的结果数组中.

至于为什么Java设计者决定在limit零时删除尾随空字符串是个好主意 - 我不知道.大多数其他编程语言/平台不这样做.我认为这是一个"陷阱" - 这个功能并不像大多数人所期望的那样有效.

  • 所有这些奇怪之处都是Guava拥有自己的Splitter类的原因之一. (4认同)
  • 请注意,如果使用`a.split(",", - 1)`(或任何负数),则不会删除空尾部组件. (3认同)