iPad 용 앱을 개발 중입니다. 문자열이 double로 변환 가능한지 여부를 어떻게 알 수 있는지 궁금합니다. 예를 들어 NSNumberFormatter의 [myString floatValue] 및 numberFromString 메서드는 유효한 숫자로 "123rrrrr"과 같은 일부 문자열을 인식하고 123이라는 숫자 부분을 반환합니다!문자열이 유효한지 결정 정수 목적 C IOS
도와 주시겠습니까?
iPad 용 앱을 개발 중입니다. 문자열이 double로 변환 가능한지 여부를 어떻게 알 수 있는지 궁금합니다. 예를 들어 NSNumberFormatter의 [myString floatValue] 및 numberFromString 메서드는 유효한 숫자로 "123rrrrr"과 같은 일부 문자열을 인식하고 123이라는 숫자 부분을 반환합니다!문자열이 유효한지 결정 정수 목적 C IOS
도와 주시겠습니까?
이러한 목적으로 NSScanner를 사용할 수 있습니다. 문자열로부터 float 및 double을 필터링하는 메서드가 있습니다.
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;
}
: 여기
그것에 대한 래퍼이며