iOS 中 使用UITextField格式化銀行卡號(hào)碼的解決方案
更新時(shí)間:2016年12月14日 09:12:18 作者:烏鴉白WHITECROW
今天小編給大家分享ios中使用UITextField格式化銀行卡號(hào)碼的實(shí)現(xiàn)思路詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
今天做格式化銀行卡,避免重復(fù)造輪子,找度娘查了下,看到一個(gè)不錯(cuò)的實(shí)現(xiàn)方式,記錄下來,并附帶實(shí)現(xiàn)思路
#pragma mark - UITextFieldDelegate UITextField鍵入字符后調(diào)用 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //拿到為改變前的字符串 NSString *text = [textField text]; //鍵入字符集,\b標(biāo)示刪除鍵 NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"]; //對(duì)當(dāng)前鍵入字符進(jìn)行空格過濾 string = [string stringByReplacingOccurrencesOfString:@" " withString:@""]; //invertedSet會(huì)對(duì)當(dāng)前結(jié)果集取反,檢查當(dāng)前鍵入字符是否在字符集合中,如果不在則直接返回NO 不改變textField值 if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) { return NO; } //增加當(dāng)前鍵入字符在改變前的字符串尾部 text = [text stringByReplacingCharactersInRange:range withString:string]; //再次確認(rèn)去掉字符串中空格 text = [text stringByReplacingOccurrencesOfString:@" " withString:@""]; //初始化字符用來保存格式化后的字符串 NSString *newString = @""; //while中對(duì)text進(jìn)行格式化 while (text.length > 0) { //按4位字符進(jìn)行截取,如果當(dāng)前字符不足4位則按照當(dāng)前字符串的最大長度截取 NSString *subString = [text substringToIndex:MIN(text.length, 4)]; //將截取后的字符放入需要格式化的字符串中 newString = [newString stringByAppendingString:subString]; if (subString.length == 4) { //截取的字符串長度滿4位則在后面增加一個(gè)空格符 newString = [newString stringByAppendingString:@" "]; } //將text中截取掉字符串去掉 text = [text substringFromIndex:MIN(text.length, 4)]; } //再次確認(rèn)過濾掉除指定字符以外的字符 newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]]; //國內(nèi)銀行卡一般為16~19位 格式化后增加4個(gè)空格 也就是最多23個(gè)字符 if (newString.length > 23) { return NO; } //手動(dòng)對(duì)textField賦值 [textField setText:newString]; //返回NO 則不通過委托自動(dòng)往當(dāng)前字符后面增加字符,達(dá)到格式化效果 return NO; }
相關(guān)文章
iOS實(shí)現(xiàn)數(shù)字倍數(shù)動(dòng)畫效果
在iOS開發(fā)中,制作動(dòng)畫效果是最讓開發(fā)者享受的環(huán)節(jié)之一,下面這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)數(shù)字倍數(shù)動(dòng)畫效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02ios啟動(dòng)頁強(qiáng)制豎屏(進(jìn)入App后允許橫屏與豎屏)
最近工作遇到這樣一個(gè)需要,當(dāng)進(jìn)入啟動(dòng)頁需要強(qiáng)制豎屏,而進(jìn)入APP后就允許橫屏與豎屏,通過查找相關(guān)的資料找到了解決的方法,所以將實(shí)現(xiàn)的方法整理后分享出來,需要的朋友們可以參考借鑒,下面來一起看看吧。2017-03-03IOS TextFiled與TextView 鍵盤的收起以及處理鍵盤遮擋
這篇文章主要介紹了IOS TextFiled與TextView 鍵盤的收起以及處理鍵盤遮擋的相關(guān)資料,需要的朋友可以參考下2016-12-12詳解iOS App設(shè)計(jì)模式開發(fā)中對(duì)于享元模式的運(yùn)用
這篇文章主要介紹了iOS App設(shè)計(jì)模式開發(fā)中對(duì)于享元模式的運(yùn)用,示例代碼為傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-04-04IOS開發(fā)Objective-C?Runtime使用示例詳解
這篇文章主要為大家介紹了IOS開發(fā)Objective-C?Runtime使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02