String urls = " ; n ; ;"
String[] strings = urls.split(";");
String[] splits = urls.split(";", -1);
for (int i = 0; i < strings.length; i++) {
System.out.println(i+" : "+strings[i]);
}
for (int i = 0; i < splits.length; i++) {
System.out.println(i+" : "+splits[i]);
}
String[] strings = urls.split(";")
这样得到的数组元素个数只是两个,后面的”;”后没有内容,它没有作为空字符串成为数组元素,结尾的空字符串被丢弃了!
这个函数还有另一种重载方式 :public String [] split (String regex, int limit) 看下说明
limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n ,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
而对于函数 public String [] split (String regex)
该方法的作用就是使用给定的表达式和限制参数 0 来调用两参数 split方法。因此,所得数组中不包括结尾空字符串
所以如果不想让结尾的空字符串被丢弃,那么应该这样写:
String urls = ";a;d;d;d;n;;";String[] strings = urls.split(";");
String[] splits = urls.split(";", -1);
for (int i = 0; i < strings.length; i++) {
System.out.println(i+" : "+strings[i]);
}
for (int i = 0; i < splits.length; i++) {
System.out.println(i+" : "+splits[i]);
}