Ответ 1
В стандарте C существует функция int isdigit( int ch );
, определенная в "ctype.h". Он будет возвращать ненулевой (TRUE), если ch - это цифра.
Также вы можете проверить его вручную:
if(c>='0' && c<='9')
{
//c is digit
}
Мне нужно проверить, является ли символ char цифрой или нет.
NSString *[email protected]"Test55";
char c =[strTest characterAtIndex:4];
Мне нужно выяснить, является ли "c" цифрой или нет. Как выполнить эту проверку в Objective-C?
В стандарте C существует функция int isdigit( int ch );
, определенная в "ctype.h". Он будет возвращать ненулевой (TRUE), если ch - это цифра.
Также вы можете проверить его вручную:
if(c>='0' && c<='9')
{
//c is digit
}
Примечание. Возвращаемое значение для 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...");
}
Существует функция C, называемая isdigit.
Это на самом деле довольно просто:
isdigit([YOUR_STRING characterAtIndex:YOUR_POS])
Вы можете проверить ссылку класса NSCharacterSet
.
Вы можете подумать о создании для этого общей функции, например следующей:
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;
}