银行卡号简单的格式化显示处理(支付宝、微信绑定卡列表显示卡号)
概述
观察发现支付宝和微信中不管是多少位的银行卡号,均被格式化为16位;类似于**** **** **** 1111这种格式,就是前面12位*加上卡号四位尾号,然后再每四位用空格隔开。我这里会有两种格式化方法:
第一种是跟支付宝微信一样的处理方式。
第二种是对卡号中间做符号(用*或者任意自己想用的符号)处理,类似于622848********12345,可以具体的定义替换符号以及替换几个数字。
如果对代码有任何问题或者有异议,或者有好的建议,请在下面评论,或者联系笔者(Q:1286090267);在下感激不尽。
源码下载
API
1. 类似于支付宝和微信绑定银行卡列表中卡号显示格式化方法
/** 类似于支付宝和微信绑定银行卡列表中卡号显示格式化方法 format str eg. transform "6012890986899099333" to "**** **** **** 9333" @param bcstr 银行卡号 @return mask之后的卡号 */+ (NSString *) maskBankCardStr:(NSString *) bcstr { NSString *tmpStr = [bcstr stringByReplacingOccurrencesOfString:@" " withString:@""]; NSString *returnStr = @""; if([tmpStr length]>=10){ NSRange sufRange = NSMakeRange([tmpStr length]-4, 4); NSString *sufString = [tmpStr substringWithRange:sufRange]; NSString *tmpStr = @""; for (int i = 0; i < 12; i++) { tmpStr = [tmpStr stringByAppendingString:@"*"]; } returnStr = [tmpStr stringByAppendingString:sufString]; NSInteger rStrLength = returnStr.length; NSString *formatStr = @""; NSString *subStr = @""; for (NSUInteger i = 0; i < rStrLength; i+=4){ if(i<rStrLength-5){ NSRange range = NSMakeRange(i, 4); subStr = [returnStr substringWithRange:range]; formatStr = [formatStr stringByAppendingString:subStr]; formatStr = [formatStr stringByAppendingString:@" "]; }else{ NSRange range = NSMakeRange(i, rStrLength - i); subStr = [returnStr substringWithRange:range]; formatStr = [formatStr stringByAppendingString:subStr]; returnStr = formatStr; break; } } }else{ returnStr = tmpStr; } return returnStr;}2. 对银行卡号做*处理
/** * format str eg. transform "6012890986899099333" to "601289******9333" * * @param bcstr 银行卡号 * @param maskStr 格式字符(* 或者 # 等等),默认为 * * @param counts 替换的字符个数 * * @return 替换后的字符串 */+ (NSString *) maskBankCardStr:(NSString *)bcstr withString:(NSString *)maskStr andReplaceCounts:(NSInteger)counts{ if (maskStr == nil) { maskStr = @"*"; } if (counts > 12) { counts = 12; } NSString *returnStr = @""; NSString *maskStrings = @""; if([bcstr length]>=4 && counts <=12){ for (int i = 0; i < counts; i++) { maskStrings = [maskStrings stringByAppendingString:maskStr]; } NSRange perRange = NSMakeRange(0, 12-counts);//前几位 NSRange sufRange = NSMakeRange([bcstr length]-4, 4);//后4位 NSString *perString = [bcstr substringWithRange:perRange]; NSString *sufString = [bcstr substringWithRange:sufRange]; returnStr = [[perString stringByAppendingString:maskStrings] stringByAppendingString:sufString];//拼接后显示出来 }else if (counts >12 && counts <= bcstr.length) { for (int i = 0; i < counts; i++) { maskStrings = [maskStrings stringByAppendingString:maskStr]; } NSRange perRange = NSMakeRange(0, maskStrings.length); returnStr = [bcstr stringByReplacingOccurrencesOfString:[bcstr substringWithRange:perRange] withString:maskStrings]; }else{ returnStr = bcstr; } return returnStr;}Usage
下载源码 然后将文件MMBankCardNoMask.{h,m}拷贝到项目中,导入#import "MMBankCardNoMask.h"
调用方法如下:
打印结果如下:
关于
- 个人github
- CDSN博客首页
- Q:1286090267














