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;
}
相關文章
- 格式化輸入輸出
- 格式化輸入和輸出
- JS使用正則控制使用者輸入銀行卡號及格式化JS
- [java IO流]之 鍵盤顯示器輸入輸出流(System)Java
- 格式化輸出
- 第四章 字串和格式化輸入/輸出字串
- [20210301]延遲顯示輸出.txt
- Python一行輸出不顯示的問題Python
- 輸入輸出
- pythonformat格式化輸出PythonORM
- 格式化輸出 22
- [20180312]iostat顯示輸出問題.txtiOS
- jQuery 顯示 input 輸入的密碼!jQuery密碼
- 輸入輸出流
- RT_Thread ps指令 輸出執行緒名字顯示不全thread執行緒
- python字串格式化輸出Python字串格式化
- 字串拼接格式化輸出字串
- Linux基礎命令---dmsg顯示核心輸出Linux
- [20230405]奇怪的顯示輸出寬度.txt
- Mysql輸出中文顯示亂碼處理MySql
- C# 的輸入輸出,(同一行/換行)C#
- win11使用NVIDIA顯示卡輸出畫面滑鼠指標偏白指標
- Java 輸入輸出流Java
- 1.輸入輸出
- 【C++】輸入輸出C++
- 輸入輸出系統
- shell——shell輸入輸出
- win10輸入法怎麼設定僅桌面顯示_win10輸入法如何僅桌面顯示Win10
- [vue] 表單輸入格式化,中文輸入法異常Vue
- linux中的輸入與輸出管理(重定向輸入,輸出,管道符)Linux
- Vue 銀行卡號只輸入數字 並4位補一個空格Vue
- [20230501]為什麼沒有顯示輸出.txt
- [20190502]給顯示輸出加入時間戳.txt時間戳
- ccat – 使用語法突出顯示輸出內容
- Java —— 標準輸入輸出Java
- 資料的輸入輸出
- python ----輸入輸出 變數Python變數
- Java基礎輸入輸出Java
- C語言輸入輸出C語言