目标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 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。

java 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。

java 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。