Swift の String(format:) でゼロ埋め文字列を作る

  • Swift
  • Foundation

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

Swiftで数値をゼロ埋めしたり、複数の値を組み合わせて文字列を作りたいとき、String(format:) を使うと簡潔に書ける。

ゼロ埋めの例

String(format: "%05d", 1)

これで "00001" になる。%05d は「5桁、0埋め」の指定で、Cのprintf系フォーマット指定子と同じ書き方。桁数を揃えたい連番やIDの表示でよく使う。

複数の値を組み合わせる例

String(format: "https://%@/%@/%d", host, path, page)

host と path が文字列、page が Int であればそのまま組み立てられる。%@ はオブジェクト(文字列を含む)用、%d は整数用の指定子。

注意点

  • String(format:) は Foundation のAPI。import Foundation が必要で、Swift標準ライブラリ単体には存在しない。
  • %@ はNSObjectベースの表現に変換される。渡す値が Optional<String> のままだと Optional("...") という文字列になることがあるので、先にアンラップしてから渡す必要がある。
  • %f など浮動小数点を扱う指定子はロケールによって桁区切りや小数点の表記が変わることがある。%d / %@ だけを使う分には影響しない。
  • URLを組み立てるだけであれば "https://\(host)/\(path)/\(page)" のような文字列補間の方がSwiftらしく、Optional周りのミスも減らせる。パスにエンコードが必要な文字が含まれる可能性があるなら URLComponents を使う方が安全。

このあたりの挙動はSwift登場初期(Objective-C時代のNSStringフォーマット仕様を引き継いでいる)から変わっていないので、バージョン依存で壊れる心配は基本的にない。