使って創ってApp

ソフトウェアを使ったり作ったりするブログです

Swiftで数字のみ含まれる文字列か判定する

テキストフィールドに入力された文字列が、数字のみで構成されているか判定したかったので、Swift での文字列検索を調べてみました。ドキュメントを読んだところ、「単純に検索したいなら NSPredicate を使うといいよ。」と書いてあったのでやってみました。

参考サイト

developer.apple.com

開発環境

数字のみで構成されている文字列か判定する

NSPredicate クラスで正規表現を使って判定します。 NSPredicate のインスタンスを作成するコードです。

let predicate = NSPredicate(format: "SELF MATCHES '\\\\d+'")

NSPredicate は検索や比較などの条件を文字列で指定して使うクラスです。文字列を使わないで検索条件を書くこともできます。MATCHES を書くと、正規表現で比較できるようになります。\\\\d+ は「一文字以上の 0 ~ 9 の文字列が続く」という意味を表しています。

この検索条件を実行してみましょう

let predicate = NSPredicate(format: "SELF MATCHES '\\\\d+'")
predicate.evaluteWithObject("123456789") // true
predicate.evaluteWithObject("1234y6789") // false

predicate を evaluteWithObject メソッドで実行しています。実行結果は Bool が返ります。

おわりに

今回のように、ある文字列が含まれているかを判定するにはいい方法だと思います。NSRegularExpression クラスを使用するよりは、単純なコードになるのではないでしょうか。