我正在爲iPad開發應用程序。我想知道如何找出一個字符串是否可以轉換爲double。例如,NSNumberFormatter的[myString floatValue]和numberFromString方法都會識別一些像「123rrrrr」這樣的字符串作爲有效數字,並返回它的數字部分,即123!確定字符串是否有效整數Objective C IOS
你能幫我嗎?
我正在爲iPad開發應用程序。我想知道如何找出一個字符串是否可以轉換爲double。例如,NSNumberFormatter的[myString floatValue]和numberFromString方法都會識別一些像「123rrrrr」這樣的字符串作爲有效數字,並返回它的數字部分,即123!確定字符串是否有效整數Objective C IOS
你能幫我嗎?
您可以將NSScanner用於這些目的。它具有從字符串中過濾浮動和雙打的方法。
的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;
}