java - 如何在java中正确分割一行

标签 java string split

我有点迷茫

 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

最佳答案

String#split()方法忽略任何尾随的空字符串。所以,它们不是数组的一部分。如果您希望它们成为数组的一部分,请使用重载的 split(String, int)方法,它将限制作为第二个参数。如果您为限制传递负值,则不会忽略尾随的空字符串。

System.out.println(s.split(",", -1).length);

而且,空字符串不是null

关于java - 如何在java中正确分割一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19071640/

相关文章:

java - 为什么我仍然可以使用 support-v4 库而不在 gradle 上导入它?

java - 如何将数字字符串转换为不同的 ArrayList

python - 在字符串中搜索不同的子字符串

将一组对象分成一定数量的组的算法?

python : extract all items that match a pattern

Java:计算字符串中序列的频率

java - 使@Fetch 与接口(interface)一起工作

java - 线程 "main"java.lang.NoClassDefFoundError : DiServer <wrong name: ds/DiServer> 中的异常

java - 从不同目录启动应用程序(.jar 文件)时如何获取位于类路径中的绝对文件路径?

Python:行长可以变化的字符串格式