虽然我非常喜欢@miensol的答案,但我的回答是(这就是为什么我不把它放在评论中): if (s != null && s.isNotEmpty()) { … } 实际上是Kotlin的惯用方式 . 只有通过这种方式,您才能在块内获得智能转换,而在接受的答案中,您必须在块内使用 s!! .
3
或创建一个扩展方法并将其用作安全呼叫:
fun String?.emptyToNull(): String? {
return if (this == null || this.isEmpty()) null else this
}
fun main(args: Array<String>) {
val str1:String?=""
val str2:String?=null
val str3:String?="not empty & not null"
println(str1.emptyToNull()?:"empty string")
println(str2.emptyToNull()?:"null string")
println(str3.emptyToNull()?:"will not print")
}
3 回答
您可以像这样使用isNullOrEmpty或其朋友isNullOrBlank:
isNullOrEmpty
和isNullOrBlank
都是CharSequence?
上的扩展方法,因此您可以使用null
安全地使用它们 . 或者将null
变为false,如下所示:你也可以做以下事情
虽然我非常喜欢@miensol的答案,但我的回答是(这就是为什么我不把它放在评论中):
if (s != null && s.isNotEmpty()) { … }
实际上是Kotlin的惯用方式 . 只有通过这种方式,您才能在块内获得智能转换,而在接受的答案中,您必须在块内使用s!!
.或创建一个扩展方法并将其用作安全呼叫: