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

Я должен проверить, является ли символ цифрой или нет.

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

Я должен узнать, является ли 'c' цифрой или нет. Как я могу реализовать эту регистрацию Objective C?

17
задан Peter Mortensen 5 March 2016 в 21:01
поделиться

5 ответов

В стандарте C есть функция int isdigit (int ch); , определенная в "ctype.h". Он вернет ненулевое значение (ИСТИНА), если ch - цифра.

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

if(c>='0' && c<='9')
{
  //c is digit
}
22
ответ дан 30 November 2019 в 10:19
поделиться

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

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;
}
0
ответ дан 30 November 2019 в 10:19
поделиться

Существует функция C под названием isdigit .

3
ответ дан 30 November 2019 в 10:19
поделиться

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

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

NSString *strTest = @"Test55";
unichar c = [strTest characterAtIndex:4];
NSCharacterSet *numericSet = [NSCharacterSet decimalDigitCharacterSet];
if ([numericSet characterIsMember:c]) {
    NSLog(@"Congrats, it is a number...");
}
31
ответ дан 30 November 2019 в 10:19
поделиться

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

1
ответ дан 30 November 2019 в 10:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: