Kotlin校验字符串空值的几个方法:
isNullOrEmpty : 为空指针或者字串长度为0时返回true,非空串与可空串均可调用。
isNullOrBlank : 为空指针或者字串长度为0或者全为空格时返回true,非空串与可空串均可调用。
isEmpty : 字串长度为0时返回true,只有非空串可调用。
isBlank : 字串长度为0或者全为空格时返回true,只有非空串可调用。
isNotEmpty : 字串长度大于0时返回true,只有非空串可调用。
isNotBlank : 字串长度大于0且不是全空格串时返回true,只有非空串可调用。
字符串声明或者调用其他对象类型的方法,仍需要判断空指针,如下代码为例:
//不能为空
var age: String = "123"
//不能为空,lateinit关键字可对非空属性 延迟初始化
lateinit var age : String
//类型后面加?表示可为空
var age1: String? = "23"
var age2: String? = null
//抛出空指针异常
val ages = age2!!.toInt()
//不做处理返回 null
val ages1 = age2?.toInt()
//age为空返回-1
val ages2 = age2?.toInt() ?: -1
1、按照Java的写作习惯
val ages = if (age != null) age.toInt() else -1
2、运算符 ?.
val ages = age?.toInt()
等价于 ages = if (age ! = null ) age.toInt() else null 。意味着返回值仍然可能为空,如不想返回结果为null,还需零做判断。
3、运算符 ?:
val ages = age?.toInt() ?: -1
等价于 ages = if (age ! = null ) age.toInt() else -1。类似于java三元运算符“变量名=条件语句 ?取值A :取值B” 的缩写,这样可以确保返回值不为null
4、运算符 !! 强行放弃非空判断,使用时必须在确保执行对象非空
val ages = age !! .toInt()
为了保障,最好添加异常捕获处理
try {
val ages = age !! .toInt()
} catch ( e :Exception) {
}