当空</string>时,Java List <string>返回1

时间:2014-03-03 17:24:48

标签: java list

当我传入空字符串“”时,为什么以下代码返回1?

private int GetItemsInCommaSeparatedList(){
    // Locals
    String param = ""; // "1,2,3" returns 3 without issue
    List<String> items = Arrays.asList(param.split("\\s*,\\s*"));

    // Empty?
    if ( items.isEmpty() )
        return 0;

    // Return
    return new items.size();
}

4 个答案:

答案 0 :(得分:6)

Javadoc to the rescue

  

如果表达式与输入的任何部分都不匹配,那么   结果数组只有一个元素,即这个字符串。

你的正则表达式与空字符串中的任何内容都不匹配,因此该方法返回一个包含一个元素的数组,即空字符串。

答案 1 :(得分:1)

空字符串也是元素。只需打印列表内容。

答案 2 :(得分:1)

您要将空字符串添加到列表中。

String param = ""; // "1,2,3" returns 3 without issue
List<String> items = Arrays.asList(param.split("\\s*,\\s*"));

这就是为什么它返回1作为大小

答案 3 :(得分:1)

您的拆分分隔符\\s*,\\s*与空字符串不匹配,此时,结果数组只有一个元素,即字符串本身。如果要为空字符串返回0,请尝试:

private static int GetItemsInCommaSeparatedList(){

    String param = ""; // "1,2,3" returns 3 without issue
    Pattern p = Pattern.compile("\\s*,\\s*");
    Matcher m = p.matcher(param);
    List<String> items = new ArrayList<String>();
    if(m.find()){
        System.out.println("Found");
        items = Arrays.asList(param.split("\\s*,\\s*"));
    }

    if ( items.isEmpty() )
        return 0;
    return items.size();
}