什么是检查字符串是否是iPhone上的整数的更好方法?

时间:2011-02-01 03:17:25

标签: iphone objective-c cocoa-touch

以下代码将标识字符串是否为整数 - 即字符串仅包含数字。但是,我讨厌这段代码。什么是更好的方式?

NSString *mightBeAnInteger = fooString;
int intValue = [fooString intValue];
if (intValue > 0
    && [[NSString stringWithFormat:@"%d",intValue] isEqualToString:mightBeAnInteger]) {
  NSLog(@"mightBeAnInteger is an integer");
}

2 个答案:

答案 0 :(得分:21)

如果字符串中只包含数字字符,

[fooString rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location == NSNotFound将为YES。

请注意,这不会捕获负数,因此您必须添加负号(可能是通过抓取mutableCopy并添加符号)。

答案 1 :(得分:1)

-(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
}

来源:Objective c: Check if integer/int/number