我一直在尝试这个:
NSNumberFormatter *testNumber=[NSNumberFormatter new];
if (![testNumber numberFromString:someNSString])
我被告知如果numberFromString
不是数字,nil
将返回someNSString
。
但是,我发现如果someNSString
包含例如“5.9%”,那么假设这不是一个数字,因此上面的测试通过,即使NSNumber本身可以使用{{ 1}}作为一个数字就好了。
那么在将百分数包括为数字时,如何优雅地测试数字与非数字?
答案 0 :(得分:0)
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
测试不是“将百分数包括为数字”,它只是忽略尾随的非数字字符。