Подтвердить что ты не робот

Как проверить, является ли символ char цифрой или нет в Objective-C?

Мне нужно проверить, является ли символ char цифрой или нет.

NSString *[email protected]"Test55";
char c =[strTest characterAtIndex:4];

Мне нужно выяснить, является ли "c" цифрой или нет. Как выполнить эту проверку в Objective-C?

4b9b3361

Ответ 1

В стандарте C существует функция int isdigit( int ch );, определенная в "ctype.h". Он будет возвращать ненулевой (TRUE), если ch - это цифра.

Также вы можете проверить его вручную:

if(c>='0' && c<='9')
{
  //c is digit
}

Ответ 2

Примечание. Возвращаемое значение для characterAtIndex: не является char, а a unichar. Так что кастинг, подобный этому, может быть опасным...

Альтернативный код:

NSString *strTest = @"Test55";
unichar c = [strTest characterAtIndex:4];
NSCharacterSet *numericSet = [NSCharacterSet decimalDigitCharacterSet];
if ([numericSet characterIsMember:c]) {
    NSLog(@"Congrats, it is a number...");
}

Ответ 3

Существует функция C, называемая isdigit.

Ответ 4

Это на самом деле довольно просто:

isdigit([YOUR_STRING characterAtIndex:YOUR_POS])

Ответ 5

Вы можете проверить ссылку класса NSCharacterSet.

Ответ 6

Вы можете подумать о создании для этого общей функции, например следующей:

BOOL isNumericI(NSString *s)
{
   NSUInteger len = [s length];
   NSUInteger i;
   BOOL status = NO;

   for(i=0; i < len; i++)
   {
       unichar singlechar = [s characterAtIndex: i];
       if ( (singlechar == ' ') && (!status) )
       {
         continue;
       }
       if ( ( singlechar == '+' ||
              singlechar == '-' ) && (!status) ) { status=YES; continue; }
       if ( ( singlechar >= '0' ) &&
            ( singlechar <= '9' ) )
       {
          status = YES;
       } else {
          return NO;
       }
   }
   return (i == len) && status;
}