银行卡号简单的格式化显示处理(支付宝、微信绑定卡列表显示卡号)

本文主要是介绍银行卡号简单的格式化显示处理(支付宝、微信绑定卡列表显示卡号),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

银行卡号简单的格式化显示处理(支付宝、微信绑定卡列表显示卡号)

概述

观察发现支付宝和微信中不管是多少位的银行卡号,均被格式化为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"

调用方法如下:

调用代码方法

打印结果如下:

这里写图片描述

关于

  1. 个人github
  2. CDSN博客首页
  3. Q:1286090267

这篇关于银行卡号简单的格式化显示处理(支付宝、微信绑定卡列表显示卡号)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1100692

相关文章

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

springboot日期格式化全局LocalDateTime详解

《springboot日期格式化全局LocalDateTime详解》文章主要分析了SpringBoot中ObjectMapper对象的序列化和反序列化过程,并具体探讨了日期格式化问题,通过分析Spri... 目录分析ObjectMapper与jsonSerializer结论自定义日期格式(全局)扩展利用配置

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

Redis如何使用zset处理排行榜和计数问题

《Redis如何使用zset处理排行榜和计数问题》Redis的ZSET数据结构非常适合处理排行榜和计数问题,它可以在高并发的点赞业务中高效地管理点赞的排名,并且由于ZSET的排序特性,可以轻松实现根据... 目录Redis使用zset处理排行榜和计数业务逻辑ZSET 数据结构优化高并发的点赞操作ZSET 结