“split(regEx)”和“split(regEx,0)”之间的Java差异?

时间:2015-04-13 10:42:46

标签: java split

使用split(regEx)split(regEx, 0)之间有什么区别吗?

因为输出是针对我测试的情况相同的。例如:

String myS = this is stack overflow;
String[] mySA = myS.split(' ');

结果为mySA === {'this','is','stack,'overflow'}

并且

String myS = this is stack overflow;
String[] mySA = myS.split(' ', 0);

也会产生mySA === {'this','is','stack,'overflow'}

这里有“隐藏”的东西吗?或者需要了解有关.split(regEx, 0)

的其他内容

2 个答案:

答案 0 :(得分:5)

它们基本相同。

引自String.split(String regex)文档:

  

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

答案 1 :(得分:0)

回答这个问题。是的他们是一样的。

请找到实习生调用split(regex,0)方法的String类的split方法。

public String[] split(String regex) {
    return split(regex, 0);
}
  

limit参数控制模式的次数   应用因此会影响结果数组的长度。如果   限制n大于零,那么模式将应用于   大多数n - 1次,数组的长度不会大于n,并且   数组的最后一个条目将包含除最后一个匹配之外的所有输入   分隔符。如果n是非正数,那么该模式将被应用为   尽可能多次,阵列可以有任何长度。 如果n为零   然后该模式将被应用尽可能多的数组,数组   可以有任何长度,尾随空字符串将被丢弃

例如,以下代码可以为您提供一些见解。

String myS = "this is stack overflow";
String[] mySA = myS.split(" ", 2);
String[] withOutLimit = myS.split(" "); 
System.out.println(mySA.length); // prints 2
System.out.println(withOutLimit.length); // prints 4