求知过程之语法基础阶段一

1、java String.split丢失字符串 空的问题
如下:
String strtest     = "1,2,";
#String strtest     = ",1,2,";
String arry[]   = strtest.split(",");
这样得到的数组元素个数只是2两个,为什么呢,最后一个","后没有内容,它没有作为空字符串成为第三个数组元素,结尾的空字符串被丢弃了!这个函数还有另一种重载方式 :public String [] split (String  regex, int limit) 看下说明limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n  - 1 次,数组的长度将不会大于 n ,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

而对于函数 public String [] split (String  regex)该方法的作用就是使用给定的表达式和限制参数 0 来调用两参数 split方法。因此,所得数组中不包括结尾空字符串

所以如果不想让结尾的空字符串被丢弃,那么应该这样写(范例):


样式1:
String str        = "1,2,";
String arr[]   = str.split(",");
System.out.println("内容"+i+"为:"+arr[i]);
输出:
内容1为:1
内容2为:2

样式2:
String str        = ",1,,2,";
String arr[]   = str.split(",");
System.out.println("内容"+i+"为:"+arr[i]);
输出:
内容1为:
内容2为:1
内容3为:
内容4为:2

样式3:
String str        = "1,2,";
String arr[]   = str.split(",", -1);
System.out.println("内容"+i+"为:"+arr[i]);
输出:
内容1为:1
内容2为:2
内容3为:

样式4:
String str        = ",1,,2,";
String arr[]   = str.split(",",-1);
System.out.println("内容"+i+"为:"+arr[i]);
输出:
内容1为:
内容2为:1
内容3为:
内容4为:2
内容5为:


总结:

str.split(",")相当于str.split(",",0) 字符串最后一个为空的情况下空情况丢失,字符串前方存在空则占位。




猜你喜欢

转载自blog.csdn.net/hansen1159/article/details/77504693