Gow*_*ham 3 iphone validation uitextfield ios
我需要限制用户只在小数点后输入两位数.我通过在textfield delegate shouldChangeCharactersInRange中执行以下代码来实现此目的.但它允许输入多个点.如何限制这个?提前致谢.
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSArray *sep = [newString componentsSeparatedByString:@"."];
if([sep count]>=2)
{
NSString *sepStr=[NSString stringWithFormat:@"%@",[sep objectAtIndex:1]];
NSLog(@"sepStr:%@",sepStr);
return !([sepStr length]>2);
}
return YES;
Run Code Online (Sandbox Code Playgroud)
Nil*_*Dev 12
最好的方法是Regular Expression在这样的shouldChangeCharactersInRange:委托方法中使用
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *newStr = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSString *expression = @"^([0-9]*)(\\.([0-9]+)?)?$";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression
options:NSRegularExpressionCaseInsensitive
error:nil];
NSUInteger noOfMatches = [regex numberOfMatchesInString:newStr
options:0
range:NSMakeRange(0, [newStr length])];
if (noOfMatches==0){
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
实现此有效字符串后:
12.004546
4546.5456465
.5464
0.454
等......
您也可以使用此限制小数点后的整数 Regular Expression@"^([0-9]*)(\\.([0-9]{0,2})?)?$"
实现此有效字符串后:
12.00
4546.54
.54
0.45
| 归档时间: |
|
| 查看次数: |
4627 次 |
| 最近记录: |