在目标c中,我如何检查字符串/ NSNumber是整数还是int
答案 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得到了一些类似的东西。