我有点困惑
public static void main(String [] args){
String s = "a,b,c,d,";
System.out.println(s.split(",").length);
}
我原本希望看到5作为输出..但输出是4? 为什么它会忽略最后一个“空”字段
如果我试图解析具有(例如)5列的数据,我该如何处理这种情况。
cases:
a,b,c,d,e
a,,c,d,e //this case is fine as this still has 5 fields.. one of the field is missing.. but thats ok
a,b,c,d //simple length check with header catches this error
a,b,c,d,e,f //simple length check
a,b,c,d,e,// looks like there are 6 fields.. but unable to catch such error by length check
答案 0 :(得分:8)
String#split()
方法忽略任何尾随空字符串。所以,它们不是数组的一部分。如果您希望它们成为数组的一部分,请使用重载的split(String, int)
方法,该方法将限制作为第二个参数。如果为限制传递负值,则不会忽略尾随空字符串。
System.out.println(s.split(",", -1).length);
而且,空字符串不是null
。