目标c:检查整数/整数/数字

时间:2010-08-13 03:58:07

标签: objective-c variables nsstring int nsnumber

在目标c中,我如何检查字符串/ NSNumber是整数还是int

6 个答案:

答案 0 :(得分:36)

如果您要确定NSString是否包含数值,请尝试使用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
}

答案 1 :(得分:12)

您可以在NSString上使用intValue方法:

NSString *myString = @"123";
[myString intValue]; // returns (int)123

以下是它的Apple文档 - 如果它不是有效整数,它将返回0:http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/intValue

希望有所帮助!

答案 2 :(得分:4)

我已将此列入我的类别NSString (Util)

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

答案 3 :(得分:2)

要检查NSNumber是否为整数,请尝试:

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

答案 4 :(得分:2)

对于NSString,如果使用intValue / integerValue,则某些情况不会被处理,因为它只考虑字符串的开头。

例如@" bl3h"不被视为整数,而是@" 3H"输出为3

我对NSString的解决方案:

使用:

NSCharacterSet *charSet = [NSCharacterSet characterSetWithCharactersInString:strName];

NSCharacterSet *numSet = [NSCharacterSet decimalDigitCharacterSet];

if([numSet isSupersetOfSet: charSet])
{
     // It is an integer (or it contains only digits)
}

答案 5 :(得分:0)

if( [(NSString *)someString intValue] )
{ /* Contains an int fosho! */ }

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

您可以首先使用

确定它是NSString还是NSNumber

[Object isKindOfClass:[NSString class]] etc ......

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

是获取其值的NSNumber的所有方法。 NSString得到了一些类似的东西。