如何在Objective-C中检查char是否为数字?

时间:2010-02-16 07:21:18

标签: objective-c

我需要检查字符是否为数字。

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

我需要找出'c'是否是数字。如何在Objective-C中实现此检查?

6 个答案:

答案 0 :(得分:30)

注意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...");
}

答案 1 :(得分:21)

在标准C中,在“ctype.h”中定义了一个函数int isdigit( int ch );。如果ch是一个数字,它将返回非零值(TRUE)。

您也可以手动检查:

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

答案 2 :(得分:3)

有一个名为isdigit的C函数。

答案 3 :(得分:2)

这实际上非常简单:

isdigit([YOUR_STRING characterAtIndex:YOUR_POS])

答案 4 :(得分:1)

您可能需要查看NSCharacterSet课程参考。

答案 5 :(得分:0)

您可以考虑为此编写如下的通用函数:

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;
}