📌

Swift: 132,000→132Kのような短縮表記はFormatterに任せよう

2025/01/23に公開

いましがた発見したのですが、最近のSwiftでは132,000→132K (日本語だと13万)のような変換ができるFormatter APIが用意されているのに気がつきました。

let en_compactName = 132000.formatted(.number.locale(Locale(identifier: "en_us")).notation(.compactName))
let ja_compactName = 132000.formatted(.number.locale(Locale(identifier: "ja_jp")).notation(.compactName))

print(en_compactName) // 132K
print(ja_compactName) // 13万

重要なのは数値をフォーマットするときに.notation(.compactName)を利用することです。
notation(_:)は数値表記の記法を指示するAPIで、NumberFormatStyleConfiguration.Notation.compactNameがお目当ての短縮表記形式です。あとはフォーマッタのロケールを設定するだけでごく簡単に使えてしまいます。(基本Locale.currentが使われるはずなので、ちゃんとローカライズしていれば気にしなくて良いかもしれませんが。)

たいへん便利なので、ぜひ使ってください。

GitHubで編集を提案

Discussion