UKey's Labo

swift – 数値の0埋め、空白埋め

ゼロパディング、ゼロサプレス

とも言う。 ゼロパディングで5桁表示の場合、123 -> 00123。 ゼロサプレスで5桁表示の場合、234 -> __234(アンダーバーは空白)のようにフォーマットすること。

動作環境

環境 バージョン
Xcode 9.4.1
iOS 11.4
swift 4.1.2

String(format: String, arguments: CVarArg…)を使用する

ゼロパディング、ゼロサプレスを行う場合は、
String(format: String, arguments: CVarArg…)
使用します。

// 11を3桁でゼロパディング
var num: String = String(format: "%03d", 11)
print("×" + num)
// 出力 : x011

// 1を3桁でゼロサプレス
num = String(format: "% 3d", 1)
print("×" + num)
// 出力 : x  1

引数formatの文字列%03dを分解してみると。(3桁のゼロパディングの場合)

となっています。

なので、ゼロサプレスの場合、2番目のパッディング文字が” “(空白)で、% 3となります。

ちなみに。 上記ではformat文字列が判り易いように、print関数で“×”を分けて記載しておりますが、
format文字列の中に含むことも可能です。

// フォーマット文字列に × を含める
var num: String = String(format: "×%03d", 11)
print(num)
// 出力 : x011

小数点、小数を含む場合

format引数が少し異なります。

// 22.1を全体9桁(小数点含む) 小数部4桁でフォーマット
let num = String(format: "%09.4f", 22.1)
print(num)
// 出力 : 0022.1000

こちらも引数format%09.4fを分解してみると。

[amazon_link asins=’B0777FQSVY’ template=’custom’ store=’takayuki57101-22′ marketplace=’JP’ link_id=’597ba0b4-aec3-11e8-b31b-fd5f8e7e2ffc’]