我需要检查字符是否为数字。
NSString *strTest=@"Test55";
char c =[strTest characterAtIndex:4];
我需要找出'c'是否是数字。如何在Objective-C中实现此检查?
答案 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;
}