1

当调用 .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

4 回答 4

6

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

只有三种情况需要说明:

  1. regex无效,PatternSyntaxException抛出a
  2. regex未找到,该数组将仅包含原始字符串。
  3. regex找到,字符串被拆分。
于 2012-07-23T15:30:04.577 回答
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]

这是你所期望的吗?

希望这可以帮助...

于 2012-07-23T15:42:27.187 回答
0

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

于 2012-07-23T15:38:51.413 回答
-1

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

于 2012-07-23T15:37:22.663 回答