[Xcode/SwiftUI] SwiftUIで数字を英語の単語に変換する方法【NumberFormatter活用】

実装

import SwiftUI

struct HomeView: View {
    @State private var input: String = ""
    @State private var spelledOut: String = ""

    var body: some View {
        VStack(spacing: 32) {
            TextField("Enter a number", text: $input)
                .keyboardType(.numberPad)
                .font(.system(size: 24))
                .padding()
                .background(Color(.systemGray6))
                .cornerRadius(12)
                .padding(.horizontal)
                .onChange(of: input) {
                    spelledOut = formatNumberAsWords(input)
                }
            Text(spelledOut)
                .font(.title.italic())
                .multilineTextAlignment(.center)
                .padding()
            Spacer()
        }
        .onAppear {
            spelledOut = formatNumberAsWords(input)
        }
    }

    private func formatNumberAsWords(_ input: String) -> String {
        guard let number = Int(input) else { return "Invalid input" }
        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = .spellOut // 数値を単語に変換するスタイル
        return numberFormatter.string(from: NSNumber(value: number)) ?? "Invalid input"
    }
}

役立つ使い方

  • 子ども向けアプリや教育アプリ
    数字を英語の単語で表示すれば、数の勉強やリスニング練習にGOOD
  • 会計アプリや領収書生成
    金額を英語で表記したいとき(小切手やインボイスなど)に便利。
  • アクセシビリティ対応
    VoiceOver利用者のために、数字を単語で表示することで読み上げやすくなる。
  • クイズ・ゲームアプリ
    「この英単語は何の数字?」みたいな問題を作るのもGOOD
  • 多言語対応アプリ
    NumberFormatterのロケールを切り替えれば、英語以外でも使える(例:中国語、スペイン語など)。