iOS 中 使用UITextField格式化銀行卡號碼的解決方案
更新時間:2016年12月14日 09:12:18 作者:烏鴉白WHITECROW
今天小編給大家分享ios中使用UITextField格式化銀行卡號碼的實現(xiàn)思路詳解,非常不錯,具有參考借鑒價值,需要的朋友參考下
今天做格式化銀行卡,避免重復(fù)造輪子,找度娘查了下,看到一個不錯的實現(xiàn)方式,記錄下來,并附帶實現(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"];
//對當(dāng)前鍵入字符進行空格過濾
string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
//invertedSet會對當(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中對text進行格式化
while (text.length > 0) {
//按4位字符進行截取,如果當(dāng)前字符不足4位則按照當(dāng)前字符串的最大長度截取
NSString *subString = [text substringToIndex:MIN(text.length, 4)];
//將截取后的字符放入需要格式化的字符串中
newString = [newString stringByAppendingString:subString];
if (subString.length == 4) {
//截取的字符串長度滿4位則在后面增加一個空格符
newString = [newString stringByAppendingString:@" "];
}
//將text中截取掉字符串去掉
text = [text substringFromIndex:MIN(text.length, 4)];
}
//再次確認(rèn)過濾掉除指定字符以外的字符
newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];
//國內(nèi)銀行卡一般為16~19位 格式化后增加4個空格 也就是最多23個字符
if (newString.length > 23) {
return NO;
}
//手動對textField賦值
[textField setText:newString];
//返回NO 則不通過委托自動往當(dāng)前字符后面增加字符,達到格式化效果
return NO;
}
相關(guān)文章
IOS TextFiled與TextView 鍵盤的收起以及處理鍵盤遮擋
這篇文章主要介紹了IOS TextFiled與TextView 鍵盤的收起以及處理鍵盤遮擋的相關(guān)資料,需要的朋友可以參考下2016-12-12
詳解iOS App設(shè)計模式開發(fā)中對于享元模式的運用
這篇文章主要介紹了iOS App設(shè)計模式開發(fā)中對于享元模式的運用,示例代碼為傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-04-04
IOS開發(fā)Objective-C?Runtime使用示例詳解
這篇文章主要為大家介紹了IOS開發(fā)Objective-C?Runtime使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02

