2011-05-04 3 views
1

iPad 용 앱을 개발 중입니다. 문자열이 double로 변환 가능한지 여부를 어떻게 알 수 있는지 궁금합니다. 예를 들어 NSNumberFormatter의 [myString floatValue] 및 numberFromString 메서드는 유효한 숫자로 "123rrrrr"과 같은 일부 문자열을 인식하고 123이라는 숫자 부분을 반환합니다!문자열이 유효한지 결정 정수 목적 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; 
} 
: 여기

그것에 대한 래퍼이며