当我传入空字符串“”时,为什么以下代码返回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();
}
答案 0 :(得分:6)
如果表达式与输入的任何部分都不匹配,那么 结果数组只有一个元素,即这个字符串。
你的正则表达式与空字符串中的任何内容都不匹配,因此该方法返回一个包含一个元素的数组,即空字符串。
答案 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();
}