Kotlin 字符串与空值判断
let
let
常配合判空符号 ?
进行使用
let 的作用是当当前值为 null 是应该额外做的有些事情;
譬如下方代码,检测输入字符如果为空就以 name 替换,如果非空那就打印 get
val str = readLine()?.let {
if(it.isNotBlank()){
println("get")
}else{
"name"
}
}
非空断言运算符
双感叹号,表示目前的值绝对不可能为 null,如果真的是 null 那就抛出异常
val getStr = readLine()!!
空合并运算符
运算符为 ?:
表示如果该符号左侧如果非空那么就赋值为左侧,如果为空就以右侧值替代之
var s = readLine()
s = s?.toString() ?: "name"
trycatch
一个正常的抛出检测异常的代码块
var number: Int? = null
try {
number!!.plus(123)
}catch (e:Exception){
e.printStackTrace()
}
until
until 用来表示一个范围
下方代码表示的是 0<=x<index
val index = NAME.indexOf('\'')
var str = NAME.substring(0 until index)
split
可以配合解构赋值来使用
val s = "hi,jack,it"
val (s1: String, s2: String, s3: String) = s.split(',')
replace
可以传入一个正则表达式,并对正则能匹配到的所有字符都进行一对一的替换!
val st = "change this name"
val cg = st.replace(Regex("[th]")){
when(it.value){
"t"->"k"
"h"->"L"
else->it.value
}
}
相等检查
==
检查两个值是否一致;
===
检查两个变量的引用是否一致;
遍历字符串
下方代码表示遍历整个字符串并打印每一个字符
val str = "the"
str.forEach {
println(it)
}
无法强转
注意,java 中可以将 int 隐式升级为 long,但是 kotlin 必须显式指定,否则报错;
使用特定函数进行类型转换
val num:Int = "9.4123".toInt()