網(wǎng)上看了很多金額輸入的代碼胖喳,大多數(shù)都有些問(wèn)題,要么就是代碼太多贮竟,對(duì)于普遍有強(qiáng)迫癥的程序猿來(lái)說(shuō)丽焊,看著很礙眼。咕别。技健。
多的不說(shuō)了,直接上代碼跟大家分享
需求:
位數(shù)可控(限定9位)
小數(shù)點(diǎn)后兩位
開(kāi)頭最多輸入一個(gè)0
-
只能有一位小數(shù)點(diǎn)
- (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})?)))?";//(帶正負(fù)號(hào)的) 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; }
有不足之處請(qǐng)大家指正顷级,謝謝凫乖!