//isNotEmpty(str) 等价于 str != null && str.length > 0
//isNotBlank(str) 等价于 str != null && str.length > 0 && str.trim().length > 0
//即:
//isNotEmpty(str) + && str.trim().length > 0 = isNotBlank(str)
//同理
//isEmpty 等价于 str == null || str.length == 0
//isBlank 等价于 str == null || str.length == 0 || str.trim().length == 0
//
//str.length > 0 && str.trim().length > 0 ---> str.length > 0
测试一:
fun main() {
val str1: String = "" //blank / empty
print(str1)
val str2: String = " " //blank / 不empty
print(str2)
val str3: String? = null //空指针null
print(str3)
val str4: String = " null " //不blank / 不empty
print(str4)
val str5: String = "null" //不blank / 不empty
print(str5)
}
private fun print(str: String?) {
println("【${str}】==========================${str?.length}")
println("【${str}】==========================${str?.trim()?.length}")
println("【${str}】==========================${str?.isBlank()}")
println("【${str}】==========================${str?.isEmpty()}")
println("【${str}】==========================${str.isNullOrBlank()}")
println("【${str}】==========================${str.isNullOrEmpty()}")
println()
}
//【】==========================0
//【】==========================0
//【】==========================true
//【】==========================true
//【】==========================true
//【】==========================true
//
//【 】==========================1
//【 】==========================0
//【 】==========================true
//【 】==========================false
//【 】==========================true
//【 】==========================false
//
//【null】==========================null
//【null】==========================null
//【null】==========================null
//【null】==========================null
//【null】==========================true
//【null】==========================true
//
//【 null 】==========================8
//【 null 】==========================4
//【 null 】==========================false
//【 null 】==========================false
//【 null 】==========================false
//【 null 】==========================false
//
//【null】==========================4
//【null】==========================4
//【null】==========================false
//【null】==========================false
//【null】==========================false
//【null】==========================false
测试二:
fun TextView.notEmpty(
notEmpty: TextView.() -> String,
empty: TextView.() -> String
) =
if (text.toString().isNotEmpty()) notEmpty() else empty()
fun TextView.notBlank(
notBlank: TextView.() -> String,
blank: TextView.() -> String
) =
if (text.toString().trim().isNotBlank()) notBlank() else blank()
//
val text = TextView(this).apply {
// text = "123"
// text = "" //empty
// text = " " //不是empty
}.notEmpty({
text.toString()
}, {
"default"
})
println("============================================$text")
//
val s = TextView(this).apply {
// text = "123"
// text = "" //blank
// text = " " //blank
}.notBlank({
text.toString()
}, {
"default"
})
println("============================================$s")