在Java開發中,org.apache.commons.lang3.StringUtils 是處理字串判空的常用工具類。其中 isEmpty() 和 isBlank() 兩個方法雖然都用於判斷字串是否為「空」,但判定標準截然不同,混用極易引發Bug。
僅當字串為 null 或長度為 0("")時返回 true。空白字元(空格、Tab、換行等)視為非空。
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false // 含空格,非空
StringUtils.isEmpty("\t\n") = false // 含製表/換行,非空
當字串為 null、長度為 0、或僅由空白字元(whitespace)組成時返回 true。涵蓋空格、製表符(\t)、換行符(\n)、換頁符(\f)、回車符(\r)等。
StringUtils.isBlank(null) = true
StringUtils.isBlank("") = true
StringUtils.isBlank(" ") = true // 單個空格
StringUtils.isBlank("\t \n \f \r") = true // 混合空白字元
StringUtils.isBlank("\b") = false // \b 是單詞邊界符,非空白字元
isBlank(),避免「全空格」繞過校驗。isEmpty()。