我确定之前已经以不同的方式提出了类似的问题——因为isEmptyOrNull非常常见,但人们实现方法不同。但是我有一个好奇的疑问,关于最佳可用方法,既要考虑内存又要考虑性能。
1)以下代码无法处理所有空格,例如空XML标记中的空格。
return inputString==null || inputString.length()==0;
2) 虽然下面的代码很安全,但trim函数可能会影响性能和内存。
return inputString==null || inputString.trim().length()==0;
3)将一和二相结合可以节省一些性能和内存(如Chris在评论中建议的)
return inputString==null || inputString.trim().length()==0 || inputString.trim().length()==0;
4) 转换为模式匹配器(仅在字符串长度非零时调用)
private static final Pattern p = Pattern.compile("\\s+");
return inputString==null || inputString.length()==0 || p.matcher(inputString).matches();
5) 使用诸如 -
Apache Commons(StringUtils.isBlank/isEmpty
)
或 Spring(StringUtils.isEmpty
)
或 Guava(Strings.isNullOrEmpty
)
或其他选项?
isEmpty
在 Java 6 中是“新功能”,而旧版本的实现或想保持 Java 5 兼容性的实现将不得不使用长度检查。 - zaplreturn inputString==null || inputString.length()==0 || inputString.trim().length()==0;
(将1和2合并),那么trim只会在非零长度的字符串上调用。你也可以加上3。 - Christian Fries