【Swift入門】数値を文字列(String)にformatする方法

数値の桁数を指定した桁で揃えたいときにはformatを使用します。

この記事では、

・formatとは
・桁数を指定する方法(0埋め)
・桁数を指定する方法(空白埋め)

というformatの基本的な解説から、

・小数点の桁数を揃える方法
・日付をフォーマットする方法(DateFormatter)

などの応用的な使い方に関しても解説していきます。

今回はそんな桁数をそろえるformatの使い方についてわかりやすく解説します!

※この記事ではSwift4.0を使用しています。

目次

formatとは

format(フォーマット)は、数値の桁数を0で揃えたいときに使用します。

例えば数値や年月日などの表示桁数が不揃いで表示を合わせたいときにformatを使用すると便利です。

formatは以下のように記述します。

書き方:

String(format: “桁数指定”, 値)

第一引数にformat:を記述し、桁数を指定します。
第二引数には桁数を揃えたい値を指定します。

formatの基本的な使い方

桁数の指定(0埋め)

ここでは実際にformatの使い方を見ていきましょう。

数値を5桁で揃えたい場合は以下のように記述します。

0を5桁で揃える

print(String(format: "%05d", 1))
print(String(format: "%05d", 10))
print(String(format: "%05d", 100))
print(String(format: "%05d", 1000))
print(String(format: "%05d", 10000))

実行結果:

00001
00010
00100
01000
10000

format:で指定した”%05d”は、0を左寄せで5桁分埋めていく処理となります。

既にフォーマットする値が指定した桁数と同じまたはそれ以上の場合は0埋めは行われません。

実例として、例えば年月日時の桁数を揃えたいときのサンプルを紹介します。

年月日時の桁数を揃える

let year = 2017
let month = 7
let day = 4
let hour = 2
let min = 6
        
//桁数を揃える
let zeroFillmonth = String(format: "%02d", month)
let zeroFillday = String(format: "%02d", day)
let zeroFillhour = String(format: "%02d", hour)
let zeroFillmin = String(format: "%02d", min)
        
//文字列を結合する
let date = String(year) + "/" +
zeroFillmonth + zeroFillday + "/" +
zeroFillhour  + zeroFillmin
        
print(date);

実行結果:

2017/0704/0206

桁数の指定(空白埋め)

0の代わりに空白を指定したい場合は以下のように記述します。

空白で揃える

print(String(format: "%5d", 1))
print(String(format: "%5d", 10))
print(String(format: "%5d", 100))
print(String(format: "%5d", 1000))
print(String(format: "%5d", 10000))

実行結果:

    1
   10
  100
 1000
10000

小数点の桁数を揃える

小数点以下の桁数を揃えたい場合は「%.5f」のように指定します。

整数の場合と同様指定した桁数と同じ、またはそれ以上の場合は0埋めは行われません。

小数点以下の桁数を揃える

print(String(format: "%.5f", 10.1))
print(String(format: "%.5f", 10.12))
print(String(format: "%.5f", 10.123))
print(String(format: "%.5f", 10.1234))
print(String(format: "%.5f", 10.123456789))

実行結果:

10.10000
10.12000
10.12300
10.12340
10.12346

日付をフォーマットする(DateFormatter)

日付を指定した書式でフォーマットするにはDateFormatterクラスを使用します。

フォーマットするにはDateFormatterクラスのdateFormatを使用し、yyyymmddなどの日付の書式を指定します。

以下に現在の日時を指定したフォーマットに変換するサンプルを紹介します。

サンプルプログラム

//DateFormatterクラスのオブジェクトを生成
let df = DateFormatter()

//DateFormatterクラスのオブジェクトを生成
df.dateFormat = "yyyy-MM-dd' 'HH:mm:ss"

//現在に日付を取得
let now = Date()
        
print(df.string(from: now))

実行結果:

2017-10-02 10:16:20

まとめ

ここでは数値の桁数を揃える方法として、

・formatとは
・桁数を指定する方法(0埋め)
・桁数を指定する方法(空白埋め)
・小数点の桁数を揃える方法
・日付をフォーマットする方法(DateFormatter)

などについて解説しました。

数値の桁数を揃えるときにformatはよく使用しますので使い方は理解しておきましょう。

もしformatの使い方を忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次