[英]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.