2011-05-04 46 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; 
} 
相關問題