Как проверить, является ли символ цифрой или нет в Objective-C? - PullRequest
17 голосов
/ 16 февраля 2010

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

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

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

Ответы [ 6 ]

30 голосов
/ 16 февраля 2010

Примечание : Возвращаемым значением для 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...");
}
21 голосов
/ 16 февраля 2010

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

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

if(c>='0' && c<='9')
{
  //c is digit
}
3 голосов
/ 16 февраля 2010

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

2 голосов
/ 26 августа 2011

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

isdigit([YOUR_STRING characterAtIndex:YOUR_POS])
1 голос
/ 16 февраля 2010

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

0 голосов
/ 16 февраля 2010

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

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...