クリアメモリ

プログラミングやモーショングラフィックス、便利なアプリケーションなど雑多に記録するブログ

【Swift3】先頭に0を付けて01や02のような数字にする方法

f:id:clrmemory:20170422183335p:plain 

Swiftに限らず、プログラミングをやっていると、数字を表示させる機会が多いですよね。

そのような時「1」と「01」では、レイアウトに大きな違いが出ます。

 

そこで今回は、値が1桁の時は文字の先頭に0をつけて表示する方法を紹介します。

1桁だけではなく3桁や8桁といった場合でも使えるので参考にしてみてください。

 

はじめに

 

今回紹介する方法は、Swiftで動作を確認しております。

また、Xcodeを使用して実行しているため、Xcodeはすでにインストールされているものとして進めます。

 

ではまず、実際の動作を確認してください。

 

 

 

Countボタンを押すと、それぞれのラベルに1追加されます。

この時、上のラベルはそのまま、下のラベルは先頭に0を追加します。

 

実行すると以下のようになりました。

 

 

どちらも同じ「3」という値ですが、レイアウトで見るとこのように大きな差が生まれてしまいます。そこで「値が1 ~ 9 」の時は「01 ~ 09」のように表示を変更させましょう。

 

 

ストーリーボードを作成

 

今回はシンプルに「0を追加するラベル」と「追加しないラベル」、「押されるとカウント+1するボタン」を配置しました。

 

 

今回は、Cocoa (MacOSX)アプリとして作成しましたが、iOSでも同様の作り方ができると思います。

 

ラベルを編集

 

通常、ラベルを編集するコードは以下のようになると思います。

 

NSTextField.stringValue = “ テキスト ”

 

 

今回の場合は、

 

NSTextField.stringValue = String(describing : count

 

になりました。

 

countはボタンが押された時に「+1」される値になっています。

ラベルの編集に必要なコードはたったこれだけです。

 

 

先頭に0をくっつけて表示する場合も、このコードを若干書き換えるだけで実装できてしまうんです。

以下から実際のコードを確認してください。

 

先頭に0を追加する

 

値が1から9の時に先頭に0をくっつけて表示するコードはいたってシンプルです。

 

addZeroLabel.stringValue = String(format: "%02d", count)

 

こちらが、0をくっつけて表示する時の書き方になります。

 

addZeroLabel -> アウトレット接続したラベル

count -> ボタンが押された時に+1される値

 

ちなみに全文はこちら

 

import Cocoa

class ClickLabelViewController: NSViewController {

    @IBOutlet weak var defaultLabel: NSTextField!
    @IBOutlet weak var addZeroLabel: NSTextField!

    var count: Int = 0

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do view setup here.
    }
    @IBAction func countButton(_ sender: Any) {

        count += 1

        defaultLabel.stringValue = String(describing: count)
        addZeroLabel.stringValue = String(format: "%08d", count)

    }

}

 

普段ラベルを書き換える時に使用するコードと違うのは「format: “%02d"だと思います。

 

このように記述することで、「01」「02」といった表示にすることができました。

 

 

 

同様に「"%02d"」の数値を「"%08d"」のように変更すると、以下のようになります。

 

 

これで8桁の数値でも、0をくっつけて埋めることができました。

もちろん、10や100になってもレイアウトは崩れません。

 

 

 

これで、桁数が変わってもレイアウトを変えないようにできました。

 

まとめ

 

今回紹介した方法を行うことによって、簡単に02などの数値をラベルに表示できるようになりました。

 

countの値が「0から9なら」のようなif文を作成しても良いのですが、"%02d"だけで同じ動作を実装できるのでオススメです。

 

 

ぜひ試してみてください。

ではまた。

新着記事