objective-c - titulo - r grafica
¿Cómo verificar si un char es un dígito o no en Objective-C? (6)
Necesito comprobar si un char es un dígito o no.
NSString *strTest=@"Test55";
char c =[strTest characterAtIndex:4];
Necesito averiguar si ''c'' es un dígito o no. ¿Cómo puedo implementar esta verificación en Objective-C?
En la norma C hay una función int isdigit( int ch );
definido en "ctype.h". Devolverá distinto de cero (VERDADERO) si ch es un dígito.
También puedes comprobarlo manualmente:
if(c>=''0'' && c<=''9'')
{
//c is digit
}
Es posible que desee comprobar la referencia de clase NSCharacterSet
.
Esto es en realidad bastante simple:
isdigit([YOUR_STRING characterAtIndex:YOUR_POS])
Hay una función de C llamada isdigit .
Puedes pensar en escribir una función genérica como la siguiente para esto:
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;
}
Nota : El valor de retorno para characterAtIndex:
no es un char
, sino un unichar
. Así que lanzar de esta manera puede ser peligroso ...
Un código alternativo sería:
NSString *strTest = @"Test55";
unichar c = [strTest characterAtIndex:4];
NSCharacterSet *numericSet = [NSCharacterSet decimalDigitCharacterSet];
if ([numericSet characterIsMember:c]) {
NSLog(@"Congrats, it is a number...");
}