You could use rangeOfCharacterFromSet::
@interface NSString (isNumber)
-(BOOL)isInteger;
@end
@interface _IsNumber
+(void)initialize;
+(void)ensureInitialization;
@end
@implementation NSString (isNumber)
static NSCharacterSet* nonDigits;
-(BOOL)isInteger {
/* bit of a hack to ensure nonDigits is initialized. Could also
make nonDigits a _IsNumber class variable, rather than an
NSString class variable.
*/
[_IsNumber ensureInitialization];
NSRange nond = [self rangeOfCharacterFromSet:nonDigits];
if (NSNotFound == nond.location) {
return YES;
} else {
return NO;
}
}
@end
@implementation _IsNumber
+(void)initialize {
NSLog(@"_IsNumber +initialize\n");
nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
}
+(void)ensureInitialization {}
@end