網(wǎng)上看了很多金額輸入的代碼,大多數(shù)都有些問題,要么就是代碼太多,對于普遍有強迫癥的程序猿來說,看著很礙眼。。。
多的不說了,直接上代碼跟大家分享
需求:
位數(shù)可控(限定9位)
小數(shù)點后兩位
開頭最多輸入一個0
-
只能有一位小數(shù)點
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ NSString *toString = [textField.text stringByReplacingCharactersInRange:range withString:string]; if (toString.length > 0) { //NSString *stringRegex = @"(\\+|\\-)?(([0]|(0[.]\\d{0,2}))|([1-9]\\d{0,8}(([.]\\d{0,2})?)))?";//(帶正負號的) NSString *stringRegex = @"(([0]|(0[.]\\d{0,2}))|([1-9]\\d{0,8}(([.]\\d{0,2})?)))?";//一般格式 d{0,8} 控制位數(shù) NSPredicate *money = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", stringRegex]; BOOL flag = [money evaluateWithObject:toString]; if (!flag) return NO; } return YES; }
有不足之處請大家指正,謝謝!