簡體   English   中英

Apache的StringUtils.isBlank(str)與Guava的Strings.isNullOrEmpty(str):你應該經常檢查空格嗎?

[英]Apache's StringUtils.isBlank(str) vs. Guava's Strings.isNullOrEmpty(str): Should you routinely check for whitespace?

使用是否有任何優勢

StringUtils.isBlank(str) 

來自Apache commons-lang。

VS

Strings.isNullOrEmpty(String string)

來自Google Guava?

我想在Java項目中使用后替換數百個它們:

if(str == null || str.isEmpty())

Guava的isNullOrEmpty似乎是我項目中上述用法的直接替代品。

但是,基於我對SO問題的閱讀,更多人似乎使用了Apache的isBlank方法。

唯一的區別似乎是StringUtils.isBlank(str)除了檢查字符串是null還是空之外還檢查空格

通常,檢查字符串的空格是否是一個好主意,或者在代碼中產生的結果可能比Guava更簡單的檢查更好?

如果你想使用Guava來復制isBlank行為,我會改用以下方法:

Strings.nullToEmpty(str).trim().isEmpty()

當你必須接受來自人類的輸入時,如果在特定的應用程序中有意義的話,你應該寬恕並從他們鍵入的任何文本中刪除前導和尾隨空格。

也就是說,使用isBlank只是半熟的。 您還需要在進一步處理之前trim字符串。 所以我建議使用s = trim(s); 在使用isNullOrEmpty進行檢查之前。

StringUtils.isBlank(str)Strings.isNullOrEmpty(String string)非常不同

第一個代碼示例只檢查字符串是否為空,它也將包含空格並返回true

StringUtils.isBlank(null)      = true 
StringUtils.isBlank("")         = true 
StringUtils.isBlank(" ")        = true 
StringUtils.isBlank("bob")      = false
StringUtils.isBlank("  bob  ")  = false

where as Strings.isNullOrEmpty(String string)如果給定的字符串為null或為空字符串,則返回true

isBlank被高估了。 直接從輸入字段讀取用戶文本的UI代碼可以一勞永逸地修剪空格,然后您可以不再擔心它。

番石榴或多或少的目標是成為Apache Commons的“下一代”替代品。 除了使用一個或另一個之外,使用isBlank()和isNullOrEmpty()之間確實沒有太大的實際區別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM