iOS-銀行卡輸入\輸出格式化顯示
專案中要實現:
以下是總結的程式碼
1.輸入
#pragma mark - UITextFieldDelegate
// 銀行卡輸入每4位分隔
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField == _cardNumberTF) {
// 4位分隔銀行卡卡號
NSString *text = [textField text];
NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];
string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {
return NO;
}
text = [text stringByReplacingCharactersInRange:range withString:string];
text = [text stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString *newString = @"";
while (text.length > 0) {
NSString *subString = [text substringToIndex:MIN(text.length, 4)];
newString = [newString stringByAppendingString:subString];
if (subString.length == 4) {
newString = [newString stringByAppendingString:@" "];
}
text = [text substringFromIndex:MIN(text.length, 4)];
}
newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];
if ([newString stringByReplacingOccurrencesOfString:@" " withString:@""].length >= 20) {
return NO;
}
[textField setText:newString];
return NO;
}
return YES;
}
2.顯示
// 給定字串根據指定的個數進行分組,每一組用空格分隔
- (NSString *)groupedString:(NSString *)string {
NSString *str = [string stringByReplacingOccurrencesOfString:@" " withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, string.length)];
// 根據長度計算分組的個數
NSInteger groupCount = (NSInteger)ceilf((CGFloat)str.length /4);
NSMutableArray *components = [[NSMutableArray alloc] init];
for (NSInteger i = 0; i < groupCount; i++) {
if (i*4 + 4 > str.length) {
[components addObject:[str substringFromIndex:i*4]];
} else {
NSString * secureStr = [str substringWithRange:NSMakeRange(i*4, 4)];
secureStr = [secureStr stringByReplacingCharactersInRange:NSMakeRange(0, 4) withString:@"****"];
[components addObject:secureStr];
}
}
NSString *groupedString = [components componentsJoinedByString:@" "];
return groupedString;
}
相關文章
- sqlplus格式化輸出(輸出結果顯示在同一行)SQL
- C++格式化輸入輸出C++
- JS使用正則控制使用者輸入銀行卡號及格式化JS
- TextField 輸入身份證號手機號銀行卡號格式化解決方案
- [java IO流]之 鍵盤顯示器輸入輸出流(System)Java
- 輸出顯示豎指令碼指令碼
- 模擬輸入密碼時顯示‘*’,然後將密碼輸出密碼
- 第四章 字串和格式化輸入/輸出字串
- 輸入輸出
- jQuery 顯示 input 輸入的密碼!jQuery密碼
- Python一行輸出不顯示的問題Python
- Vue 銀行卡號只輸入數字 並4位補一個空格Vue
- 工作列輸入法圖示不見了怎麼辦? 顯示輸入法圖示的方法
- Mysql輸出中文顯示亂碼處理MySql
- pythonformat格式化輸出PythonORM
- 字串拼接格式化輸出字串
- Python格式化輸出Python
- java日期格式化輸出Java
- SQL*PLUS 格式化輸出SQL
- 【C++】輸入輸出C++
- Java 輸入輸出流Java
- 輸入輸出系統
- JAVA輸入輸出流Java
- C# 的輸入輸出,(同一行/換行)C#
- win10輸入法怎麼設定僅桌面顯示_win10輸入法如何僅桌面顯示Win10
- [vue] 表單輸入格式化,中文輸入法異常Vue
- linux中的輸入與輸出管理(重定向輸入,輸出,管道符)Linux
- C++中的檔案輸入/輸出(3):掌握輸入/輸出流 (轉)C++
- ccat – 使用語法突出顯示輸出內容
- Linux 輸出或儲存終端顯示Linux
- 資料的輸入輸出
- Java —— 標準輸入輸出Java
- 排序,檔案輸入輸出排序
- 03 資料輸入-輸出
- Python 輸入和輸出Python
- Python的輸入輸出Python
- 檔案操作-輸入輸出
- Java基礎輸入輸出Java