運用都合で空文字列とNullを相互に変換して取り扱う必要があったので、簡単に備忘録としてまとめておく。
空文字列を受け取ったらNullに変換する
val empty: String = ""
val nullable: String? = empty.ifEmpty { null }
空文字列 or 空白文字列を受け取ったらNullに変換する
val blank: String = " "
val nullable: String? = blank.ifBlank { null }
Nullを受け取ったら空文字列に変換する
val nullable: String? = null
val empty: String = nullable.orEmpty()
動作確認
Kotlin Playgroundでサクッと動作確認。
fun main() {
listOf("", " ", null, "hoge").forEach { string ->
check(string)
print("string.orEmpty() : ")
check(string.orEmpty())
print("string?.ifEmpty{ null } : ")
check(string?.ifEmpty{ null })
print("string?.ifBlank{ null } : ")
check(string?.ifBlank{ null })
println("")
}
}
fun check(string: String?) {
when(string) {
null -> println("null")
"" -> println("empty")
" " -> println("blank")
else -> println(string)
}
}
empty
string.orEmpty() : empty
string?.ifEmpty{ null } : null
string?.ifBlank{ null } : null
blank
string.orEmpty() : blank
string?.ifEmpty{ null } : blank
string?.ifBlank{ null } : null
null
string.orEmpty() : empty
string?.ifEmpty{ null } : null
string?.ifBlank{ null } : null
hoge
string.orEmpty() : hoge
string?.ifEmpty{ null } : hoge
string?.ifBlank{ null } : hoge