我正在寻找一个代码,允许我在小数位前保留最多10个数字,在小数点后最多保存3个数字.
有效的例子是:1234567899.123 - 十进制前最多10个数字和小数点后3个数字.
123.123 - 小数点前少于10个数字好.
123456.1 - 小数点后少于3个数字.
123 - 好的
我在下面使用这个功能:
-(BOOL)textField: (UITextField*)tectField shouldChangeCharactersInRange: (NSRange)range replacementString:(NSString*) string {
NSString *newStrn = [textField.text stringReplacingCharactersInRange: range withString: string];
NSArray *arrayofStrn = [newStrn componentsSeparatedByString:@"."]; //to keep only one decimal
if([arrayofStrn count]> 2) {
return NO;
}
else {
return YES;
}
}
Run Code Online (Sandbox Code Playgroud)
不知道如何进一步保持十进制前10个数字(小于10个正常)的最大限制和小数点后3个数字的最大限制(少于3个数字或小数点后没有数字).
非常感谢你们!
你可以通过像这样的简单正则表达式实现这一点
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
{
NSString *editedString = [textField.text stringReplacingCharactersInRange:range withString:string];
NSString *regex = @"\\d{0,10}(\\.\\d{0,3})?"
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [predicate evaluateWithObject:editedString];
}
Run Code Online (Sandbox Code Playgroud)
我用以下输入测试了上面的内容
@"1234567891", //=> YES
@"12345678912", //=> NO
@"1234567891.122", //=> YES
@"1234567891.1234", //=> NO
@".123", //=> YES
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
790 次 |
| 最近记录: |