verificar validar una solo saber numeros numero isdigit enteros entero como caracter cadena objective-c variables nsstring int nsnumber

objective-c - una - validar numeros en c



Objetivo c: verificar si es entero/int/nĂºmero (6)

Para verificar si un NSNumber si un entero intente:

const char *t = [(NSNumber *)value objCType]; if (strcmp("i", t) == 0); // YES if integer

En el objetivo c, ¿cómo puedo verificar si una cadena / NSNumber es un entero o int



if( [(NSString *)someString intValue] ) { /* Contains an int fosho! */ } if( [(NSNumber *)someNumber intValue] ) { /* Contains an int wich is not 0.... :D */ }

Por supuesto, primero puede determinar si es un NSString o NSNumber mediante el uso de

[El objeto es KindOfClass: [clase NSString]] etc ...

- boolValue - charValue - decimalValue - doubleValue - floatValue - intValue - integerValue - longLongValue - longValue - shortValue - unsignedCharValue - unsignedIntegerValue - unsignedIntValue - unsignedLongLongValue - unsignedLongValue - unsignedShortValue

son todos los métodos de NSNumber para obtener sus valores. NSString obtuvo algunos similares.


Lo puse en mi categoría NSString (Util) .

- (BOOL) isInt { if ([self isEqualToString:@"0"]) return YES; return (self.intValue != 0); }


Si está tratando de determinar si un NSString tiene o no un valor numérico, intente usar NSNumberFormatter .

-(BOOL) stringIsNumeric:(NSString *) str { NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; NSNumber *number = [formatter numberFromString:str]; [formatter release]; return !!number; // If the string is not numeric, number will be nil }


Para NSString, si utiliza intValue / integerValue, hay ciertos casos que no se manejan, ya que solo tiene en cuenta el comienzo de la cadena.

Por ejemplo, @ "bl3h" no se consideró un entero, pero @ "3h" dio una salida de 3

Mi solución para NSString:

Utilizar :

NSCharacterSet *charSet = [NSCharacterSet characterSetWithCharactersInString:strName]; NSCharacterSet *numSet = [NSCharacterSet decimalDigitCharacterSet]; if([numSet isSupersetOfSet: charSet]) { // It is an integer (or it contains only digits) }