🍀

Kotlinの標準APIを知る【String編①】

2021/12/23に公開

JetBrainsさんが公開してくれていたTips

https://www.youtube.com/watch?v=IL3RLKvWJF4
こちらで紹介してくれているTipsをまとめてみました。

Tips1 removeXXXXX

val fileName = "sample.jpeg"
println(fileName.removeSuffix(".jpeg"))
// => sample
val corporateName = "(株)sample"
println(corporateName.removePrefix("(株)"))
// => sample
val methodName = "__METHOD_NAME__"
println(methodName.removeSurrounding("__"))
// => METHOD_NAME

JavaとかでreplaceAll(regex, "")とかで書きがちなやつを読み手に伝わりやすく書けるようになっていると思います。

Tips2 ifBlank

val target: String = ""
// println(if(target.isEmpty()) "empty" else target)
println(target.ifBlank {"empty"})

コメントアウトされたif文による記述をするとInteliiJだと置き換えを勧めてくれます。ほんとインテリです。
Javaで三項演算子やわかりずらいIf文の手続き的な記述をしがちなところを宣言的な形でとても分かりやすく記述できます。ラムダを受け取れるのも素敵ですね。
※標準APIの中だけだと対象がnullableな場合は使えないのだけ痛いかなと思います。
=>ここは上手く実装真似てnullableでも対応できる拡張関数生やしてもいいかもしれません。

Tips3 ケースインセンティブな比較

val a = "JAPAN"
val b = "Japan"
println(a.equals(b)) // => false
println(a.equals(b, ignoreCase = true)) // => true

便利ですね!Javaで良くString.lowercase()してから比較とか書いてたのがいかに愚かか痛感させられました。

Discussion