16

目的 c で、string/NSNumber が整数か整数かを確認するにはどうすればよいですか

4

6 に答える 6

39

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
}
于 2010-08-13T06:10:23.297 に答える
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

それが役立つことを願っています!

于 2010-08-13T04:01:39.010 に答える
3

NSNumber が整数かどうかを確認するには、次のようにします。

const char *t = [(NSNumber *)value objCType];
if (strcmp("i", t) == 0); // YES if integer
于 2010-08-13T04:02:26.180 に答える
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)
}
于 2015-06-03T08:00:15.893 に答える
0
if( [(NSString *)someString intValue] )
{ /* Contains an int fosho! */ }

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

もちろん、最初に NSString または NSNumber を使用して判断できます

[オブジェクト isKindOfClass:[NSString クラス]] など...

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

値を取得するための NSNumber のすべてのメソッドです。NSString には、いくつかの同様のものがあります。

于 2010-08-13T07:15:27.227 に答える