String.split()是否有可能在结果数组中返回一个空节点?

时间:2012-07-23 15:27:52

标签: java string split

当调用.split时,是否有任何字符串可以返回带有空节点的数组?这是我试过的:

    String string = "test,,test";
    if (string != null && !string.isEmpty()) {
        String[] parsedString = string.split(",");
        for (String stringNode : parsedString) {
            if (stringNode != null) {
                //perform logic here. Omitted for the purpose of this question.
            }
        }
    }

我希望我的方法能够处理一个空字符串,但是如果String.split()不能返回一个带有空节点的数组,那么删除它可能是安全的吗?

4 个答案:

答案 0 :(得分:6)

不,String.split(String regex)永远不能返回其中包含null元素的数组。

只有三种情况需要考虑:

  1. regex无效,引发了PatternSyntaxException
  2. 找不到
  3. regex,数组将只包含原始字符串。
  4. 找到
  5. regex,字符串被拆分。

答案 1 :(得分:4)

查看StringUtils

split()方法。

String str = "1,2,3,,4";
    System.out.println(Arrays.toString(str.split(",")));
    System.out.println(Arrays.toString(StringUtils.split(str,",")));

输出:

[1, 2, 3, , 4]
[1, 2, 3, 4]

这是你期望的吗?

希望这会有所帮助......

答案 2 :(得分:0)

是的,您可以删除if (stringNode != null)。 不会返回空值。 String.split()可能会返回一个空字符串(作为数组元素,我的意思是)。

答案 3 :(得分:-1)

根据Javadoc,String.split()不会返回null和空字符串。