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桁のゼロパディングの場合)
- % : フォーマット指定子
- 0 : パッディング(埋める)文字
- 3 : 桁数
- d : 10進数(Decimalの意)
となっています。
なので、ゼロサプレスの場合、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を分解してみると。
- % : フォーマット指定子
- 0 : パディング(埋める)文字
- 9 : 全体桁数(小数点含む)
- . : 整数部と小数部を分けるための記述子
- 4 : 小数部の桁数
- f : Float
[amazon_link asins=’B0777FQSVY’ template=’custom’ store=’takayuki57101-22′ marketplace=’JP’ link_id=’597ba0b4-aec3-11e8-b31b-fd5f8e7e2ffc’]