2011-05-04 87 views
1

我正在为iPad开发应用程序。我想知道如何找出一个字符串是否可以转换为double。例如,NSNumberFormatter的[myString floatValue]和numberFromString方法都会识别一些像“123rrrrr”这样的字符串作为有效数字,并返回它的数字部分,即123!确定字符串是否有效整数Objective C IOS

你能帮我吗?

回答

0

NSNumberFormatter方法getObjectValue:forString:range:error会做你想要什么。这将解析一个字符串给定范围内的数字 - 将其设置为整个字符串 - 并返回它使用的字符串的范围 - 如果该范围没有扩展到字符串的末尾,则数字后面会出现垃圾。

这里是它的一个简单的包装:

- (BOOL) getNumberValue:(out NSNumber **)parsedNumber 
       forString:(NSString *)inputString 
        error:(out NSError **)error 
{ 
    NSNumberFormatter *parser = [NSNumberFormatter new]; 

    // remove whitespace so we can easily test if the whole string was parsed OK 
    NSString *trimmed = [inputString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
    NSUInteger trimmedLength = [trimmed length]; 
    NSRange all = NSMakeRange(0, trimmedLength); 

    BOOL status = [parser getObjectValue:parsedNumber forString:trimmed range:&all error:error]; 

    if(status && all.length != trimmedLength) 
    { // getObjectValue succeeded but garbage after number (if garbage before number getObjectValue will fail) 
     if (error != NULL) 
     { // make appropriate error 
      *error = [NSError errorWithDomain:NSCocoaErrorDomain 
             code:NSFormattingError 
            userInfo:[NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"The value “%@” is invalid.", inputString] 
                      forKey:NSLocalizedDescriptionKey]]; 
     } 
     status = NO; 
    } 

    return status; 
}