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