1

我一直在尝试这个:

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

有人告诉我,如果不是数字,numberFromString它将返回。nilsomeNSString

但是,我发现如果someNSString包含例如“5.9%”,则假定它不是一个数字,因此我上面的测试通过了,即使 NSNumber 本身可以5.9%作为一个数字工作就好了。

那么,当将百分比作为数字包含在内时,如何优雅地测试数字与非数字呢?

4

1 回答 1

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
}

当然,如果您实际上并不希望它最后出现在 afloat中,请替换为-[NSScanner scanDouble:]or -[NSScanner scanDecimal:]

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

于 2012-04-05T07:24:26.717 回答