UITextField 银行卡号、千位分隔符格式化

1.在输入银行卡号的时候,每隔4位空1位。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    if (textField.tag == 100) {
        /// 银行卡格式化
        NSString *text = [textField text];
        NSString *format = @" ";
        NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];
        string = [string stringByReplacingOccurrencesOfString:format withString:@""];
        if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {
            return NO;
        }
    
        text = [text stringByReplacingCharactersInRange:range withString:string];
        text = [text stringByReplacingOccurrencesOfString:format 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:format];
            }
            text = [text substringFromIndex:MIN(text.length, 4)];
        }
    
        newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];
    
        if (newString.length >= 24) {
            return NO;
        }
    
        [textField setText:newString];
        return NO;
    }
    else {
        return YES;
    }
}

最后将格式化的字符串再转化去掉所有空格(包括字符串首尾两头的空格)的格式
在NSString的分类中添加下面方法:

- (NSString *)cleanSpace{
    NSString * text = [self stringByReplacingOccurrencesOfString:@" " withString:@""];
    text = [text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    return text;
}

2.在输入工资金额的时候,每隔三位数添加一个逗号(千位分隔符)

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    if (textField.tag == 101) {
    
        NSString *text = [textField text];
        NSString *format = @",";
        NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];
        string = [string stringByReplacingOccurrencesOfString: format withString:@""];
        if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {
            return NO;
        }
    
        text = [text stringByReplacingCharactersInRange:range withString:string];
        text = [text stringByReplacingOccurrencesOfString:@ format withString:@""];
    
        if ([text hasPrefix:@"0"]) {
            return NO;
        }
    
        NSMutableString *newString = [NSMutableString stringWithString:@""];
    
        while (text.length > 0) {
            NSRange subRange = NSMakeRange(text.length - MIN(text.length, 3), MIN(text.length, 3));
            NSString * subString = [text substringWithRange:subRange];
            [newString insertString:subString atIndex:0];
            if (subString.length == 3) {
                [newString insertString:@ format atIndex:0];
            }
            text = [text substringToIndex:text.length - subString.length];
        }
    
        NSString * resultString = [newString copy];
        resultString = [resultString stringByTrimmingCharactersInSet:[characterSet invertedSet]];

        if (resultString.length >= 16) {
            return NO;
        }
    
        [textField setText:resultString];
        return NO;
    }
}

最后将格式化的字符串再转化去掉千位分隔符的格式
在NSString的分类中添加下面方法:

- (NSString *)salary{
    NSString * text = [self stringByReplacingOccurrencesOfString:@"," withString:@""];
    text = [text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    return text;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 8,487评论 0 7
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,876评论 0 4
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 10,024评论 0 5
  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 12,634评论 1 19
  • longaaaa =14200666; Console.WriteLine(aaaa.ToString("N0")...
    鱼落于天阅读 4,518评论 0 1

友情链接更多精彩内容