はじめに
Kotlinでゼロ埋めをする話です。初めてやろうとしたときに意外と手間取ったので、昔のブログで記事にしました。
何人かの方に読んで頂けているようだったので、アップデートした版を改めてこちらでも書いてみます。
ちなみに今回実行してるKotlinの環境は1.9.23
です。
Javaだとこう
number
の値を4桁までゼロ埋めする
String.format("%04d", number);
Kotlinだとこう
java.lang.String
ググって最初に見つけたのはこれ。
要はKotlinではなくJavaのString
を使えば、当然Javaの書き方でいけるよというものです。が、流石に毎回完全修飾名を書くのは微妙すぎます。
java.lang.String.format("%04d", number)
padStart
ちゃんと英語でkotlin zero padding
とか調べるとpadStart
という最適なものが出てきます。
"12".padStart(4, '0')
ちゃんと4桁まで0埋めされる
0012
padEnd
後ろを埋めたかったらpadEnd
がある。
"12".padEnd(4, '0')
1200
スペース埋め
リファレンスに書いてある通りですが、padStart
やpadEnd
の第二引数はデフォルトがスペースなので、省略すればスペース埋めになります。
"12".padStart(4)
12
必要なら拡張関数とか自作
「自分がやりたいのはゼロ埋めだけだから、毎回0
を指定したくない」とかであれば、そういう関数を作ってしまってもいいかもしれないですね。
fun CharSequence.padZeroStart(length: Int): CharSequence = padStart(length, '0')
"12".padZeroStart(4)
0012
あとは数値からゼロ埋めの文字列を作ったりも。
fun Int.padZeroStart(length: Int): String = toString().padStart(length, '0')
12.padZeroStart(4)
0012
余談
久しぶりにKotlinのリファレンス見に行きましたけど、サンプルがWeb上でそのまま実行できるようになっていて驚きました。サクッと動かして試せて便利ですね。