写法 1:先处理 null,再处理空字符串(推荐)
tvOtherAbout.text = it.Note?.trim() ?: "无备注"
解析:
it.Note?.trim():用安全调用 ?.,如果 Note 是 null,整体结果直接为 null;如果非空则执行 trim()
?: "无备注":Elvis 运算符,当左边结果为 null(包括 Note 本身为 null,或 trim() 后为空字符串?不,这里要注意:trim() 后为空字符串不会触发 Elvis,继续看写法 2)
写法 2:同时处理 null 和 trim 后空字符串(更严谨)
Note 本身为 null
Note 非空但 trim 后为空字符串(比如 " " 这种空白字符)
tvOtherAbout.text = it.Note?.trim().takeIf { it.isNullOrNotEmpty() } ?: "无备注"解析:
it.Note?.trim():安全调用 trim,避免 null 崩溃
takeIf { it.isNullOrNotEmpty() }:只有当结果非 null 且非空时才保留原结果,否则返回 null
?: "无备注":最终兜底,只要前面结果为 null,就显示 "无备注"
写法 3:更直观的 if-else 形式(适合新手理解)
tvOtherAbout.text = if (it.Note.isNullOrBlank()) {
"无备注"
} else {
it.Note.trim()
}解析:
isNullOrBlank():Kotlin 内置扩展函数,同时判断 null 和空白字符串(包括全是空格的情况)
逻辑清晰:如果是 null 或空白,显示 "无备注",否则 trim 后赋值
推荐优先级:
追求简洁用 写法 1(如果确定 Note 非空时不会是纯空白字符串)
追求严谨用 写法 2 或 写法 3(覆盖所有异常情况)
安全调用 ?.:避免 null 调用方法的崩溃
Elvis 运算符 ?::null 兜底
isNullOrBlank():同时判断 null 和空白字符串(比 isNullOrEmpty() 更实用,因为会忽略空格)
版权声明
本文章如果涉及侵权,请联系我。
部分文章系本人原创未经许可,不得转载。



蒙公网安备 15090202000037号
评论列表
发表评论