使用NSNumberFormatter测试数字和百分比的字符串

时间:2012-04-05 06:24:31

标签: objective-c

我一直在尝试这个:

    NSNumberFormatter *testNumber=[NSNumberFormatter new];
    if (![testNumber numberFromString:someNSString])

我被告知如果numberFromString不是数字,nil将返回someNSString

但是,我发现如果someNSString包含例如“5.9%”,那么假设这不是一个数字,因此上面的测试通过,即使NSNumber本身可以使用{{ 1}}作为一个数字就好了。

那么在将百分数包括为数字时,如何优雅地测试数字与非数字?

1 个答案:

答案 0 :(得分:0)

使用-[NSScanner scanFloat:]

float testNumber;
NSScanner* scanner = [NSScanner scannerWithString:someNSString];
if ([scanner scanFloat:&testNumber]) {
    // A valid number, and it is stored in `testNumber`
} else {
    // Not a valid number, at least by floating-point standards
}

当然,如果您最后在float内并不想要它,请替换-[NSScanner scanDouble:]-[NSScanner scanDecimal:]

请注意,您的floatValue测试不是“将百分数包括为数字”,它只是忽略尾随的非数字字符。