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
}

もちろん、最後に実際にそれを望まない場合は、またはfloatに置き換えてください。-[NSScanner scanDouble:]-[NSScanner scanDecimal:]

floatValueテストは「パーセントを数値として含める」のではなく、末尾の数字以外の文字を単に無視していることに注意してください。

于 2012-04-05T07:24:26.717 に答える