0

我正在通过 NSScanner:scanInteger 将字符串转换为有符号整数,但它似乎接受了诸如“123abc”之类的值作为“123”,而不是在无效输入上引发错误。

我可以进行自己的自定义验证,但更愿意找到一个 API 来进行转换并在“123abc”上失败。

顺便说一句,'abc123' 确实会因 scanInteger 而失败,这很好。

4

1 回答 1

0

我不认为使用扫描仪可以做到这一点——你可以,但有更简单的方法。我会使用 NSString 方法 rangeOfCharactersFromSet: 来检查非数字字符。

NSCharacterSet *notDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
NSUInteger nonDigits = [enteredString rangeOfCharacterFromSet:notDigits].length;

如果 nonDigits 不为零,则用户输入的不是数字。如果您想允许小数点,那么您必须创建自己的集合,其中包含除数字和小数点以外的所有内容。

于 2012-05-29T15:16:57.173 回答