Java - 分裂的意外结果

Mic*_*dan 1 java regex string split

为什么

int a = 1234;
String b = a + "";
String[] c = b.split("");
Run Code Online (Sandbox Code Playgroud)

造成:

c[0] = ""
c[1] = "1"
c[2] = "2"
c[3] = "3"
c[4] = "4"
Run Code Online (Sandbox Code Playgroud)

Exp*_*lls 7

String.split将正则表达式String作为参数.您提供了一个空的正则表达式,它匹配空字符串.因此,从字符串的开头得到一个空字符串匹配,然后用空字符串分隔每个字符.您应该提供有效的正则表达式.


通常在拆分结束时会有一个空字符串,但是Java故意将这个从.split一个参数用法中排除到数组中.

$ php -r "var_dump(preg_split('//', 1234));"
array(6) {
  [0]=>
  string(0) ""
  [1]=>
  string(1) "1"
  [2]=>
  string(1) "2"
  [3]=>
  string(1) "3"
  [4]=>
  string(1) "4"
  [5]=>
  string(0) ""
}
Run Code Online (Sandbox Code Playgroud)

  • @Explosion:我的好奇心让我变得更好; 这是我不知道的`split()`.`split("")`只是`split("",0)`的别名.事实证明,指定限制的任何负值(第二个参数)意味着"不限制结果的数量",指定"0"表示"不限制结果的数量,并且不包括尾随空字符串".很有意思.所以`split("", - ))将等同于你给出的PHP代码. (2认同)