首先抛出问题,代码如下
int index = 1;
String string = "11111,";
String[] strings = string.split(",");
System.out.println(strings[index]);
当时大概的逻辑是字符串根据“,”劈开,获取index位置的字符串,信心满满的run起来之后
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at com.xuwei.user.wrapper.Test.main(Test.java:15)
数组越界?不应该返回长度为2的数组么?然后果断开始测试模式
System.out.println("测试1");
String str = ",,,,,,";
String[] strs = str.split(",");
System.out.println("string:"+str);
System.out.println("length:"+strs.length);
System.out.println("result:"+ JSON.toJSONString(strs));
System.out.println("\n测试2");
String str2 = ", , , , , ,";
String[] strs2 = str2.split(",");
System.out.println("string:"+str2);
System.out.println("length:"+strs2.length);
System.out.println("result:"+ JSON.toJSONString(strs2));
System.out.println("\n测试3");
String str3 = "1,2,3,4,5,6,7";
String[] strs3 = str3.split(",");
System.out.println("string:"+str3);
System.out.println("length:"+strs3.length);
System.out.println("result:"+ JSON.toJSONString(strs3));
System.out.println("\n测试4");
String str4 = "1,2,3,4,5,,";
String[] strs4 = str4.split(",");
System.out.println("string:"+str4);
System.out.println("length:"+strs4.length);
System.out.println("result:"+ JSON.toJSONString(strs4));
System.out.println("\n测试5");
String str5 = ",,,1,2,3,4,5";
String[] strs5 = str5.split(",");
System.out.println("string:"+str5);
System.out.println("length:"+strs5.length);
System.out.println("result:"+ JSON.toJSONString(strs5));
System.out.println("\n测试6");
String str6 = "1,2,,,3,,,4,5,,";
String[] strs6 = str6.split(",");
System.out.println("string:"+str6);
System.out.println("length:"+strs6.length);
System.out.println("result:"+ JSON.toJSONString(strs6));
获取结果
测试1
string:,,,,,,
length:0
result:[]
测试2
string:, , , , , ,
length:6
result:[""," "," "," "," "," "]
测试3
string:1,2,3,4,5,6,7
length:7
result:["1","2","3","4","5","6","7"]
测试4
string:1,2,3,4,5,,
length:5
result:["1","2","3","4","5"]
测试5
string:,,,1,2,3,4,5
length:8
result:["","","","1","2","3","4","5"]
测试6
string:1,2,,,3,,,4,5,,
length:9
result:["1","2","","","3","","","4","5"]
可以看出,在头部(左侧)、中间的,,之类内容会被截取出来,但是在尾部(右侧)的””全被丢弃了。
调整测试代码
System.out.println("测试1");
String str = ",,,,,,";
String[] strs = str.split(",");
System.out.println("string:"+str);
System.out.println("length:"+strs.length);
System.out.println("result:"+ JSON.toJSONString(strs));
strs = str.split(",", -1);
System.out.println("length:"+strs.length);
System.out.println("result:"+ JSON.toJSONString(strs));
输出结果
测试1
string:,,,,,,
length:0
result:[]
length:7
result:["","","","","","",""]
总结一下,正常的String.split()方法会抛弃尾部的空值,如果需要保持数组完整,可以采用String.split(“”,-1)方法
没有回复内容