ObjecTips

Swift & Objective-C で iOS とか macOS とか

NSString が数字のみで構成されているかを判定する

暗証番号とかパスコードの入力画面を作る際に数字だけの入力を許可したい場合がある。
文字列の入力制限は UITextFieldDelegateメソッド

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;

で行うとして実装部分。
方法はいろいろありそうだけどいくつか簡潔っぽいのを。

  • 1つ目は NSCharacterSet を使って文字列が数字のみで構成されているかを判定。
  • 2つ目は NSCharacterSet を使って文字列に数字以外のものが1つも含まれていないかを判定。
  • 3つ目はちょっと強引かも。NSRegularExpression を使って数字のみが含まれているかを判定。
  • 4つ目は NSRegularExpression を使って数字以外のものが1つも含まれていないかを判定。
  • 5つ目は NSPredicate正規表現を使って数字のみが含まれているかを判定。

数字以外にもいろいろと応用は効きそう。