iOS 下只能输入浮点数以及限制浮点数的位数
2018-05-22 本文已影响17人
ZYiDa
代码如下:
#pragma mark -- 按照要求判断经纬度,不能为整数,小数位数不能大于6
*
* string 输入的数字字符串
* limit 小数位数限制
*/
- (BOOL)judgeNumberWithString:(NSString *)string andFloatScanLimit:(int)limit{
NSScanner *scan = [NSScanner scannerWithString:string];
int val;
BOOL isInt = [scan scanInt:&val] && [scan isAtEnd];
if (isInt) {
return NO;
}
NSString *pre = [NSString stringWithFormat:@"^[0-9]+(\\.[0-9]{1,%d})?$",limit <= 0 ? 1:limit];
NSPredicate *numPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",pre];
BOOL isGreatThanSixNumber = [numPre evaluateWithObject:string];
return isGreatThanSixNumber?YES:NO;
}
这个需求来源于:项目中要输入经纬度,经纬度的值只能为浮点数且小数后的位数控制在1-6
位。
上面代码中,第一部分判断是不是整数,如果是直接返回 NO,不是则继续下一步。
第二部分用来判断浮点数的位数,@"^[0-9]+(\\.[0-9]{1,6})?$"
中的{1,6}
表示浮点数小数后的位数最少1
位最多只能有6
位。
由此延伸出来的应用范围,比如金额输入以及其它数字输入内容限制。