考虑到本地化数字格式,如何检查字符串是否包含有效数字。
这个问题不是关于转换数字的主要问题。我可以用 NSNumberFormatter 做到这一点。如果我不能,那么我什至不需要这样做,并且可以将字符串保留为字符串。但我需要检查它是否包含有效的数字。
顺便说一句,我们在 textField:shouldChangeCharactersInRange: ... 委托方法的中间。在这里,我想通过返回 NO 来防止键入非法字符。
这是我拥有的代码:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
// Only test for numbers if it is a certain text field.
if (textField == self.numValueTextField) {
NSString *resultingString = [textField.text stringByReplacingCharactersInRange: range withString: string];
// The user deleting all input is perfectly acceptable.
if ([resultingString length] == 0) {
return true;
}
double holder;
NSScanner *scan = [NSScanner scannerWithString: resultingString];
BOOL isNumeric = [scan scanDouble: &holder] && [scan isAtEnd];
if (isNumeric) {
[self.detailItem setValue:number forKey:kValueDouble];
}
return isNumeric;
}
return YES; // default for any other text field - if any.
}
这很好用,但它暗示英文符号。这意味着浮点必须是一个pont。但在世界的某些地方,它可能是一个逗号或其他任何东西。
我确实知道如何检查某些字符。所以我可以检查 0-9、逗号和点。但是有没有一种“正确”的方式来做到这一点?
如果它很重要:我在 iOS 环境中。