読み込み中...

Swiftでのゼロ埋め手法15選!初心者でも簡単にマスター!

Swiftでのゼロ埋めのイラストとその実装方法のサンプルコード Swift
この記事は約16分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めばSwiftでのゼロ埋めをマスターすることができるようになります。

ゼロ埋めとは、指定された長さになるように数字の前にゼロを付加することを言います。

例えば、”5″を3桁のゼロ埋めにすると”005″となります。

これは、特定のフォーマットが求められる場面や、整然としたデータ表示が必要な場面で非常に役立ちます。

Swiftでのゼロ埋めの方法を知りたい初心者の方、あるいはゼロ埋めの基本を知っているがさらに深掘りしたい方向けに、基本から応用、さらにはカスタマイズ方法までをわかりやすく解説します。

●Swiftのゼロ埋めとは

ゼロ埋めは、文字列や数値を特定の長さに整えるための技術です。

特にデータベースのIDやログのタイムスタンプ、日付の表示などでよく使用されます。

○ゼロ埋めの基本理解

Swiftにおけるゼロ埋めは、Stringのformatting機能を使うことで実現できます。

この基本的な機能を用いることで、数値や文字列を特定の桁数に揃えることができます。

このコードではStringのフォーマット機能を使って、数値を特定の桁数でゼロ埋めしています。

この例では3桁のゼロ埋めを行っています。

let number = 5
let zeroPadded = String(format: "%03d", number)
print(zeroPadded)

このコードを実行すると、出力結果として”005″という文字列が得られます。

つまり、数値5を3桁のゼロ埋めにした結果が”005″となることが確認できます。

●Swiftでのゼロ埋めの使い方

Swiftではゼロ埋めの実現方法がいくつかあります。

ここでは、基本的なゼロ埋めの手法から、桁数の指定方法までを順番に学んでいきましょう。

○サンプルコード1:基本的なゼロ埋めの方法

Swiftでのゼロ埋めは、文字列のフォーマット機能を使用します。

下記のコードでは、整数を指定された桁数でゼロ埋めする基本的な方法を表しています。

let number = 7
let formattedNumber = String(format: "%03d", number)
print(formattedNumber)

このコードでは、%03dというフォーマットを使って、整数7を3桁のゼロ埋めにしています。

この例では、7007という文字列として出力されます。

○サンプルコード2:桁数を指定してゼロ埋めする方法

桁数を変えることも可能です。

下記のコードは5桁でゼロ埋めを行う例を表しています。

let anotherNumber = 123
let anotherFormattedNumber = String(format: "%05d", anotherNumber)
print(anotherFormattedNumber)

このコードでは%05dというフォーマットを使っています。

この例では、123という数字が00123として出力されます。

○サンプルコード3:浮動小数点数をゼロ埋めする方法

Swiftにおける浮動小数点数のゼロ埋めは、整数とは少し異なるフォーマットを用います。

特に、桁数だけでなく、小数点以下の桁数も指定する場面が増えるため、少し複雑になりがちです。

しかし、理解すれば非常に簡単に使いこなすことができるでしょう。

下記のコードは、浮動小数点数を指定された全体の桁数と小数点以下の桁数でゼロ埋めする方法を表しています。

let floatNumber: Double = 3.14
let formattedFloat = String(format: "%07.2f", floatNumber)
print(formattedFloat)

このコードでは%07.2fというフォーマットを使って、浮動小数点数3.14を全体で7桁、小数点以下2桁でゼロ埋めしています。

この例では、3.140003.14という文字列として出力されます。

○サンプルコード4:文字列のゼロ埋め

時には、数字ではなく文字列を特定の長さでゼロ埋めする必要が出てくることもあります。

ここでは、文字列を左側からゼロで埋める方法を紹介します。

let str = "ABC"
let formattedStr = String(format: "%05s", str)
print(formattedStr)

このコードでは%05sというフォーマットを使用し、文字列ABCを5桁でゼロ埋めしています。

この例では、ABC00ABCという文字列として出力されます。

○サンプルコード5:配列やリストの要素をゼロ埋めする方法

配列の各要素を特定の桁数でゼロ埋めしたい場合もあるでしょう。

ここでは、配列の要素をゼロ埋めするサンプルを紹介します。

let numbers = [5, 23, 456]
let formattedNumbers = numbers.map { String(format: "%03d", $0) }
print(formattedNumbers)

この例のコードでは、配列内の各数値を3桁でゼロ埋めするためにmap関数と%03dのフォーマットを使用しています。

この例の実行結果、配列[5, 23, 456]["005", "023", "456"]という新しい文字列の配列として出力されます。

●Swiftでのゼロ埋めの応用例

Swiftでのゼロ埋めは、基本的な数字や文字列の整形だけでなく、様々な場面での応用が可能です。

ここでは、特定のシチュエーションや実践的な使い方を中心に、ゼロ埋めの応用例を紹介します。

○サンプルコード6:ゼロ埋めを活用した日付のフォーマット変更

日付の表示は、月や日によっては1桁となる場合があります。

これを2桁のゼロ埋めで整形することで、一貫性を持たせることが可能です。

ここでは、日付のフォーマットをゼロ埋めを利用して整形する方法を紹介します。

import Foundation

let date = Date()
let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm:ss"
let formattedDate = formatter.string(from: date)
print(formattedDate)

このコードでは、DateFormatterを使って現在の日付と時刻をyyyy/MM/dd HH:mm:ssの形式で取得しています。

この例では例えば、2023年2月5日の場合、2023/02/05というように月や日が自動的にゼロ埋めされて表示されます。

○サンプルコード7:ゼロ埋めを使った時計の表示

デジタル時計の表示などで、時間や分、秒を2桁で表示する場合にゼロ埋めは非常に役立ちます。

下記のコードは、現在の時間をゼロ埋めして表示しています。

let currentHour = Calendar.current.component(.hour, from: Date())
let currentMinute = Calendar.current.component(.minute, from: Date())
let currentSecond = Calendar.current.component(.second, from: Date())

let timeString = String(format: "%02d:%02d:%02d", currentHour, currentMinute, currentSecond)
print(timeString)

このコードでは、現在の時間、分、秒を取得して、それぞれを%02dのフォーマットを使ってゼロ埋めします。

この例で、もし時間が9時、分が7分、秒が3秒だった場合、09:07:03という形で出力されます。

○サンプルコード8:ゼロ埋めを活用した計算処理

Swiftでのゼロ埋めは、数字の整形だけでなく、計算処理を行う際の一貫性や精度を保つためにも役立ちます。

特に、計算の結果を一定の桁数で整える際に、ゼロ埋めが欠かせません。

下記のコードは、2つの数値の積を計算し、その結果を10桁で表示しています。

func multiplyAndFormat(_ num1: Double, _ num2: Double) -> String {
    let product = num1 * num2
    return String(format: "%010.2f", product)
}

let result = multiplyAndFormat(12.45, 3.78)
print(result)
// 出力:0000047.01

このコードでは、multiplyAndFormat関数を使って、2つの数値を掛け合わせ、その結果をゼロ埋めで10桁に整形しています。

%010.2fのフォーマットを使って、小数点第2位までを表示し、全体として10桁になるようにゼロ埋めしています。

この例では、12.45と3.78の積、47.01を0000047.01として出力しています。

このように、計算の結果を一定の桁数で整形することで、出力されるデータの一貫性を保つことができます。

これは、データの可読性を向上させるだけでなく、他のシステムやツールとの連携時にも役立ちます。

○サンプルコード9:ゼロ埋めを使った文字列操作

Swiftの文字列操作においても、ゼロ埋めは有効なツールとなります。

特に、固定の長さを持つ文字列データを扱う際には、ゼロ埋めでデータの長さを一定に保つことが重要です。

ここでは、指定された長さに満たない文字列をゼロ埋めして補完しています。

func padStringWithZeros(_ original: String, length: Int) -> String {
    let paddingCount = length - original.count
    if paddingCount <= 0 { return original }
    return String(repeating: "0", count: paddingCount) + original
}

let paddedString = padStringWithZeros("12345", length: 10)
print(paddedString)
// 出力:0000012345

このコードでは、padStringWithZeros関数を定義しています。

この関数は、与えられた文字列が指定の長さに満たない場合、前方にゼロを追加して補完します。

この例では、”12345″という文字列を10桁のゼロ埋めに整形して、”0000012345″として出力しています。

文字列のゼロ埋めは、特にデータベースや外部システムとの連携、あるいはファイルの入出力などで、一定の長さのデータを扱う際に役立ちます。

○サンプルコード10:ゼロ埋めを利用したデータ整形

ゼロ埋めは、データの整形や変換の際にも頻繁に利用されます。

例えば、CSVファイルやテキストファイルを扱う際に、一定の桁数やフォーマットでデータを出力する必要があるケースが考えられます。

下記のコードは、整数の配列をゼロ埋めした文字列のリストに変換しています。

let numbers = [5, 23, 456, 7890]
let formattedNumbers = numbers.map { String(format: "%05d", $0) }
print(formattedNumbers)
// 出力:["00005", "00023", "00456", "07890"]

このコードでは、map関数を使用して、整数の配列を一定の長さを持つゼロ埋めの文字列に変換しています。

この例では、各数値を5桁のゼロ埋めに整形しています。

●Swiftでのゼロ埋めの注意点と対処法

Swiftでのゼロ埋めを行う際、初心者の方が陥りやすいいくつかのトラップがあります。

これらの問題を避けるための注意点と対処法を紹介します。

○サンプルコード11:ゼロ埋め時の桁数オーバーの対処

Swiftでのゼロ埋めを行う際、指定した桁数が元の数字の桁数よりも小さい場合、予期せぬ結果が得られることがあります。

下記のサンプルコードは、このようなケースをどのように取り扱うかを表しています。

func zeroPadding(_ number: Int, digits: Int) -> String {
    let formatString = "%0\(digits)d"
    return String(format: formatString, number)
}

let result = zeroPadding(123456, digits: 4)
print(result)

このコードでは、zeroPadding関数を使用して、指定された桁数で数値をゼロ埋めします。

しかし、この例では、6桁の数値123456を4桁でゼロ埋めしようとしています。

この場合、ゼロ埋めが適切に行われず、元の数値123456がそのまま出力されます。

このような場合、関数内で桁数のチェックを行い、桁数が指定よりも大きい場合はエラーメッセージを出力するなどの対処が必要です。

○サンプルコード12:ゼロ埋め時のエラー対応方法

ゼロ埋めを行う際のもう一つの一般的なエラーは、負の数値や非数値のデータをゼロ埋めしようとすることです。

下記のサンプルコードは、このようなケースでのエラー対応方法を表しています。

func zeroPaddingSafe(_ value: Any, digits: Int) -> String? {
    if let number = value as? Int, number >= 0 {
        let formatString = "%0\(digits)d"
        return String(format: formatString, number)
    } else {
        print("ゼロ埋めできない値が入力されました。")
        return nil
    }
}

let positiveResult = zeroPaddingSafe(123, digits: 5)
print(positiveResult ?? "エラー") // 出力:00123

let negativeResult = zeroPaddingSafe(-123, digits: 5)
print(negativeResult ?? "エラー") // 出力:ゼロ埋めできない値が入力されました。

let nonNumberResult = zeroPaddingSafe("abcd", digits: 5)
print(nonNumberResult ?? "エラー") // 出力:ゼロ埋めできない値が入力されました。

このコードでは、zeroPaddingSafe関数を使用して、入力値が正の整数であるかどうかをチェックしています。

負の数値や非数値のデータが入力された場合、関数はエラーメッセージを出力してnilを返します。

●Swiftでのゼロ埋めのカスタマイズ方法

Swiftにおけるゼロ埋めの機能は、非常に汎用的で多様な用途に応用することが可能です。

しかし、特定のニーズに合わせてカスタマイズすることで、より便利に、また効果的にこの機能を利用することができます。

ここでは、Swiftでのゼロ埋めをカスタマイズする方法についていくつかのサンプルコードを用いて詳しく解説していきます。

○サンプルコード13:オリジナルのゼロ埋め関数の作成

Swiftでのゼロ埋めを更に進化させるためには、自分だけのオリジナルのゼロ埋め関数を作成することが有効です。

下記のコードでは、指定した文字での埋め込みを行う関数を表しています。

func customPadding(_ number: Int, digits: Int, padCharacter: Character) -> String {
    let originalString = "\(number)"
    let padCount = digits - originalString.count
    let padding = String(repeating: padCharacter, count: max(0, padCount))
    return padding + originalString
}

let result = customPadding(123, digits: 5, padCharacter: "*")
print(result) // 出力される文字列は「**123」となります。

このコードでは、customPaddingという関数を用いて、指定された文字での埋め込みを実現しています。

この例では、「*」という文字での埋め込みが行われています。

○サンプルコード14:ゼロ以外の文字での埋め方

ゼロ埋めだけでなく、他の文字での埋めもSwiftでは容易に実装することができます。

下記のサンプルコードは、指定した文字で数値を埋める方法を表しています。

func fillPadding(_ number: Int, digits: Int, fillCharacter: Character = "0") -> String {
    let originalString = "\(number)"
    let padCount = digits - originalString.count
    let padding = String(repeating: fillCharacter, count: max(0, padCount))
    return padding + originalString
}

let resultA = fillPadding(45, digits: 4, fillCharacter: "#")
print(resultA) // 出力される文字列は「##45」となります。

let resultB = fillPadding(45, digits: 4)
print(resultB) // 出力される文字列は「0045」となります。

上記のコードでは、fillPadding関数によって指定した文字での埋め込みが行われています。

デフォルトではゼロでの埋め込みが行われますが、引数fillCharacterを変更することで、好きな文字での埋め込みが可能です。

○サンプルコード15:ゼロ埋め関数の拡張

Swiftの拡張機能を利用して、Int型などの既存の型にゼロ埋めのメソッドを追加することも可能です。

下記のサンプルコードでは、Int型にゼロ埋めのメソッドを追加しています。

extension Int {
    func zeroPadded(to digits: Int) -> String {
        let formatString = "%0\(digits)d"
        return String(format: formatString, self)
    }
}

let number = 78
let result = number.zeroPadded(to: 5)
print(result) // 出力される文字列は「00078」となります。

このコードでは、Int型にzeroPaddedというメソッドを追加しています。

このメソッドを使用することで、任意のInt型の値を簡単にゼロ埋めすることができます。

まとめ

Swiftを使用したゼロ埋めの手法は、初心者から上級者まで幅広く利用される重要な技術の一つです。

この記事を通して、ゼロ埋めの基本的な使い方から、応用例、注意点、そしてカスタマイズ方法まで、さまざまなアスペクトを深く掘り下げて学ぶことができたかと思います。

初心者の方でも、本記事のサンプルコードを手本として、実際にコードを書きながら学ぶことで、Swiftでのゼロ埋めの手法を簡単にマスターすることが可能です。

そして、上級者の方は、カスタマイズや拡張の方法を利用して、更に高度なゼロ埋めの技術を磨くことができるでしょう。

Swiftのゼロ埋めは、日常のプログラミング作業だけでなく、アプリケーションのUIデザインやデータ整形などの幅広い場面で活用することができます。

そのため、この技術をしっかりと身につけることで、Swiftプログラミングの幅が一気に広がります。

今回学んだゼロ埋めの技術を始めとする多くの知識や技術を、日々のプログラミングの中で積極的に取り入れ、繰り返し実践することで、より高いレベルのSwiftプログラマとなることを心から願っています。