[英]What's the better way to check if a String is empty than using String.trim().length() in Java 5/6?
在 Java5/6 中可能有一种方法可以返回字符串中第一个非空白字符的索引。 但我再也找不到它了。 代码分析工具说它比检查String.trim().length()
更好。
我总是喜欢使用 Apache Commons StringUtils 库。 它有 isEmpty() 和 isBlank() 处理空白。
http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html
更不用说 class 和一般库中的许多其他有用的方法。
我会使用番石榴CharMatcher
class:
boolean onlyWhitespace = CharMatcher.WHITESPACE.matchesAllOf(input);
好的,我终于从InefficientEmptyStringCheck的 PMD 规则中找到了它:
低效的EmptyStringCheck:
自:PMD 3.6
String.trim().length() 是一种检查字符串是否真的为空的低效方法,因为它创建一个新的字符串 object 只是为了检查它的大小。 考虑创建一个循环字符串的 static function,检查每个字符的 Character.isWhitespace() 并在找到非空白字符时返回 false。
这只是 PMD 的建议。 采用与否取决于哪个优先:程序的效率或程序员的时间。
Java 11 介绍了“isBlank”方法。 请参阅https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#isBlank()
如果字符串为空或仅包含空白代码点,则返回 true,否则返回 false。
Java 6 引入了String.isEmpty()
,因此您可以将它与String.trim()
结合使用。 您还可以使用正则表达式,例如使用这样的条件: .str.matches("\\s*")
。
如果要测试,是否只包含空格字符,可以使用RegEx
string.matches("\\s*")
认为它比 trim().isEmpty() 更有效,特别是如果您期望空格并且有长字符串,但我不确定编译 RegEx 需要多少努力。
如果要测试长度为零的字符串,则最好使用isEmpty()
或length() == 0
。
如果要测试字符串是否仅包含空格,则搜索第一个非空格字符会更有效,因为不会创建中间 object(与trim()
一样)
但无论如何,我也推荐 Apache 的 commons StringUtils.isEmpty()
,因为它很好地封装了所有这些。
String 中有一个用于此目的的方法。
String emptyString = "";
emptyString.isEmpty();
这将返回 true。
尝试
str!=null && str.trim().isEmpty()
(最佳方式) string.equals("")
但是也,
string.isEmpty()
string.equals(null)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.