NSStringが指定した文字のみで構成されているかチェック

NSStringが特定の文字だけで構成されているか判定したいことがある。文字種だけの問題で正規表現を使う程ではない、という時は、NSCharacterSetの包含関係の判定を使うと簡単にチェックできる。パスワードのValidationとか、UITextFieldに数字のみを受け付ける場合のちょっとしたチェックなどに便利。

例1: NSStringが数字のみで構成されているかチェック

  NSCharacterSet *stringCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
  NSCharacterSet *digitCharacterSet = [NSCharacterSet decimalDigitCharacterSet];
  if ([digitCharacterSet isSupersetOfSet:stringCharacterSet]) {
    NSLog(@"数字のみ");
  } else {
    NSLog(@"数字以外の文字が存在");
  }

例2: 空白以外のASCIIコードで構成されているかチェック

  NSCharacterSet *stringCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"123abc~!"];
  NSCharacterSet *asciiWithoutSpaceCharacterSet = [NSCharacterSet characterSetWithRange:NSMakeRange(0x21, 0x5e)];
  if ([asciiWithoutSpaceCharacterSet isSupersetOfSet:stringCharacterSet]) {
    NSLog(@"英数字のみ(空白はなし)");
  } else {
    NSLog(@"英数字以外の文字がある(空白の可能性もある)");
  }
Pocket
LINEで送る
LinkedIn にシェア

コメントを残す