目标c:检查整数/整数/数字
Posted
技术标签:
【中文标题】目标c:检查整数/整数/数字【英文标题】:Objective c: Check if integer/int/number 【发布时间】:2011-03-29 06:38:47 【问题描述】:在目标 c 中,我如何检查字符串/NSNumber 是整数还是 int
【问题讨论】:
请更全面地解释您的意思。 NSString 和 NSNumber 都可以转换为 int 或 NSInteger,但 is 都不是 int 或 NSInteger。 好吧,抱歉,我需要知道 String 或 Int 是否是 int/integer。请参阅我将一个数字除以另一个数字,但用户输入的数字可能不是 int。我需要检查它是否是一个 int 数字 【参考方案1】:如果您要确定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
【讨论】:
我以为我是唯一一个这样做的人! hack 强制转换为布尔值。不错! 这个问题比approved answer 好,因为它给你一个真/假的结果。批准的答案没有。 这样更好,因为如果您检查包含以数字开头的字母的字符串,则接受的答案不会按预期工作。示例“1234asdf”将返回 1234,而不是 0,这将返回 NO。而 "000" 将返回 0,你可能认为是错误的,但事实并非如此 这取决于用户的语言环境吗?【参考方案2】:你可以在 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
希望有帮助!
【讨论】:
如何判断变量是否为字符串? 如,您想检查某些用户输入是否只是普通的旧字符串或数字?就像我上面所说的,当 NSString 不是有效整数时,intValue 返回 0。假设您从 UITextView 获取信息 - [[myTextView text] intValue] 如果可能会返回一个有效的 int,如果它不能被验证为 int,则返回 0。 如果字符串代表实际的整数值0怎么办? 小心这个。如果字符串不以整数值开头,这只会返回 0。像“123 street”这样的东西仍然会返回整数123。来源:developer.apple.com/library/mac/documentation/Cocoa/Reference/… 我无法使用它,因为它并非在所有情况下都有效。【参考方案3】:我已将此归入我的类别NSString (Util)
。
- (BOOL) isInt
if ([self isEqualToString:@"0"])
return YES;
return (self.intValue != 0);
【讨论】:
【参考方案4】:如果是整数,则检查 NSNumber:
const char *t = [(NSNumber *)value objCType];
if (strcmp("i", t) == 0); // YES if integer
【讨论】:
【参考方案5】:对于 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)
【讨论】:
【参考方案6】: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]] 等...
--布尔值 – 字符值 – 十进制值 – 双值 – 浮点值 – 整数值 – 整数值 – 长长值 – 长值 – 短值 – 无符号字符值 – 无符号整数值 – 无符号整数值 – 无符号长长值 – 无符号长值 – 无符号短值
都是 NSNumber 获取其值的方法。 NSString 有几个类似的。
【讨论】:
以上是关于目标c:检查整数/整数/数字的主要内容,如果未能解决你的问题,请参考以下文章
java 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。
java 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。
java 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。
java 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。