iOS 中 使用UITextField格式化银行卡号码的解决方案

 更新时间:2016年12月14日 09:12:18   作者:乌鸦白WHITECROW  
今天小编给大家分享ios中使用UITextField格式化银行卡号码的实现思路详解,非常不错,具有参考借鉴价值,需要的朋友参考下

今天做格式化银行卡,避免重复造轮子,找度娘查了下,看到一个不错的实现方式,记录下来,并附带实现思路

#pragma mark - UITextFieldDelegate UITextField键入字符后调用
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
 //拿到为改变前的字符串
 NSString *text = [textField text];
 //键入字符集,\b标示删除键
 NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];
 //对当前键入字符进行空格过滤
 string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
 //invertedSet会对当前结果集取反,检查当前键入字符是否在字符集合中,如果不在则直接返回NO 不改变textField值
 if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {
 return NO;
 }
 //增加当前键入字符在改变前的字符串尾部
 text = [text stringByReplacingCharactersInRange:range withString:string];
 //再次确认去掉字符串中空格
 text = [text stringByReplacingOccurrencesOfString:@" " withString:@""];
 //初始化字符用来保存格式化后的字符串
 NSString *newString = @"";
 //while中对text进行格式化
 while (text.length > 0) {
 //按4位字符进行截取,如果当前字符不足4位则按照当前字符串的最大长度截取
 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)];
 }
 //再次确认过滤掉除指定字符以外的字符
 newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];
 //国内银行卡一般为16~19位 格式化后增加4个空格 也就是最多23个字符
 if (newString.length > 23) {
 return NO;
 }
 //手动对textField赋值
 [textField setText:newString];
 //返回NO 则不通过委托自动往当前字符后面增加字符,达到格式化效果
 return NO;
}

相关文章

  • iOS实现数字倍数动画效果

    iOS实现数字倍数动画效果

    在iOS开发中,制作动画效果是最让开发者享受的环节之一,下面这篇文章主要给大家介绍了关于iOS实现数字倍数动画效果的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • iOS 汉字的拼音

    iOS 汉字的拼音

    本文通过一段代码给代码介绍了ios汉字的拼音知识及将汉字转拼音的代码,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-08-08
  • ios启动页强制竖屏(进入App后允许横屏与竖屏)

    ios启动页强制竖屏(进入App后允许横屏与竖屏)

    最近工作遇到这样一个需要,当进入启动页需要强制竖屏,而进入APP后就允许横屏与竖屏,通过查找相关的资料找到了解决的方法,所以将实现的方法整理后分享出来,需要的朋友们可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • IOS TextFiled与TextView 键盘的收起以及处理键盘遮挡

    IOS TextFiled与TextView 键盘的收起以及处理键盘遮挡

    这篇文章主要介绍了IOS TextFiled与TextView 键盘的收起以及处理键盘遮挡的相关资料,需要的朋友可以参考下
    2016-12-12
  • 详解iOS App设计模式开发中对于享元模式的运用

    详解iOS App设计模式开发中对于享元模式的运用

    这篇文章主要介绍了iOS App设计模式开发中对于享元模式的运用,示例代码为传统的Objective-C,需要的朋友可以参考下
    2016-04-04
  • iOS中获取系统相册中的图片实例

    iOS中获取系统相册中的图片实例

    这篇文章主要介绍了iOS中获取系统相册中的图片实例,具有一定的参考价值没有需要的朋友可以了解一下。
    2016-11-11
  • IOS开发Objective-C Runtime使用示例详解

    IOS开发Objective-C Runtime使用示例详解

    这篇文章主要为大家介绍了IOS开发Objective-C Runtime使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • IOS 照片编辑的view封装的实例详解

    IOS 照片编辑的view封装的实例详解

    这篇文章主要介绍了IOS 照片编辑的view封装的实例详解的相关资料,这里提供实例帮助大家实现这样的功能,需要的朋友可以参考下
    2017-08-08
  • IOS安装包比Android容量大的原因

    IOS安装包比Android容量大的原因

    这篇文章主要介绍了为什么IOS安装包比Android容量大的原因,如果你是一个IOS或者安卓开发者,学习下相关知识吧。
    2018-02-02
  • 苹果公司推出的新编程语言Swift简介和入门教程

    苹果公司推出的新编程语言Swift简介和入门教程

    这篇文章主要介绍了苹果公司推出的新编程语言Swift简介和入门教程,Swift是苹果于WWDC 2014.6.3发布的编程语言,主要用来替代Objective-C,需要的朋友可以参考下
    2014-06-06

最新评论