我正在通过 NSScanner:scanInteger 将字符串转换为有符号整数,但它似乎接受了诸如“123abc”之类的值作为“123”,而不是在无效输入上引发错误。
我可以进行自己的自定义验证,但更愿意找到一个 API 来进行转换并在“123abc”上失败。
顺便说一句,'abc123' 确实会因 scanInteger 而失败,这很好。
我正在通过 NSScanner:scanInteger 将字符串转换为有符号整数,但它似乎接受了诸如“123abc”之类的值作为“123”,而不是在无效输入上引发错误。
我可以进行自己的自定义验证,但更愿意找到一个 API 来进行转换并在“123abc”上失败。
顺便说一句,'abc123' 确实会因 scanInteger 而失败,这很好。
我不认为使用扫描仪可以做到这一点——你可以,但有更简单的方法。我会使用 NSString 方法 rangeOfCharactersFromSet: 来检查非数字字符。
NSCharacterSet *notDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
NSUInteger nonDigits = [enteredString rangeOfCharacterFromSet:notDigits].length;
如果 nonDigits 不为零,则用户输入的不是数字。如果您想允许小数点,那么您必须创建自己的集合,其中包含除数字和小数点以外的所有内容。