Java空字符串调用split()函数分割返回数组长度为1的解释

关于java空字符串调用split函数返回数组长度为1的问题!!

  • 举例:
  • 问题分析
  • 解决方法

举例:

 public static void main(String[] args) {
        //空字符串
        String str = "";
        //根据逗号分割返回数组的长度
        System.out.println(str.split(",").length);
}

输出的结果为:
Java空字符串调用split()函数分割返回数组长度为1的解释_第1张图片

问题分析

输出的结果跟自己脑海中想象的值完全不一样,这结果不应该是0吗?带着好奇心去看了一下split()方法的源码,如下图:
Java空字符串调用split()函数分割返回数组长度为1的解释_第2张图片
这就是问题所在的关键地了,当正则表达式匹配不到时,实际返回了一个数组,并且数组里面包含了当前的空字符串,所以就导致结果数组长度为1了

解决方法

提前判断字符串是否为空,如果为空的话直接创建一个新字符串数组

 		String str = "";
        String[] arr;
        if (str.isEmpty()){
            arr = new String[]{};
        }else{
            arr = str.split(",");
        }

你可能感兴趣的:(java)