2014-10-30 59 views
0

我很確定NSString中的文本是否爲int值。NSString是iOS中的一個NSInteger值的值

例如:

NSString value = @"something"; 
int i = value.intValue; 
// i -> 0 

所以,我是0,它不給我發信息,如果文字是真實的int值。

第二個問題是,如果字符串爲int的一致好評:

NSString vaue = @"10.10.21.32" 
int i = value.intValue; 
// i -> 10 

如何確定的,如果文字是真實的int值?

Marko

回答

1

使用NSNumberFormatter,與lenient設置爲false,allowsFloats設置爲false。

NSNumberFormatter *intFormat = [NSNumberFormatter alloc] init]; 
intFormat.lenient = false; 
intFormat.allowsFloats = false; 
NSNumber *myNumber = [intFormat numberFromString:value]; 
int finalValue; 
if (myNumber) { // was able to parse OK 
    finalValue = [myNumber intValue]; 
} else { 
    // handle invalid strings here 
} 
0

我做了一些代碼。它將用於識別該字符串是文本,實數還是整數。

#define REGEX_NUMBER @"^[0-9.0-9]*$" 

NSString *digitString = @"test"; 

NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", REGEX_NUMBER]; 

BOOL isNumber = [phoneTest evaluateWithObject:digitString]; 

if (isNumber) { 

    // String contains digit characters 

    if ([digitString rangeOfString:@"."].location == NSNotFound) { 

     // String contains real value 
     int value = [digitString intValue]; 

    } else { 

     // String contains int value 
     double value = [digitString doubleValue]; 

    } 
} else { 
    NSLog(@"alpha-numeric value"); 
    // String contains alpha-numeric values. 
} 
相關問題