你是怎么宰割银行卡号的,通用办法?
阐明,一下代码均通过ts编写,请再运行时先搭建好ts运行时环境。
办法一
// 正则宰割任意字符串interface IStrType { length?: number}// 束缚泛型export interface IFunc<T extends IStrType = string, U = number, Z = string>{ ( value:T | number, limits: U, suffix: Z ): string}const regExpFormatStr: IFunc = (value, limits, suffix) => { const _regExp: RegExp = new RegExp(`.(?=(.{${limits}})+$)`, 'g'); return (typeof value !== "number" && value?.length ? value : value.toString()).replace(_regExp, $n1 => { return `${$n1}${suffix}` });}
办法二(有点cuo)
/* * @desc 解决数字,并且增加宰割 */interface IToolFunction<T, U> { (target: T, limits?: number): U}type ITF<T, U> = IToolFunction<T, U>;const numHandler: ITF<any, string> = (target: any, limits: number = 4) => { // 初始化数组 let _$: string[] = target.toString().split(''); // 记录原始数组长 let _len: number = _$.length; // 新格局长期数组 let _format: string[] = []; // loop for(let i: number = 0; i < _len; i++) { // 轮询数组长 let _loopLen: number = _$.length; if(_loopLen % limits === 0) { _format.push(_$.splice(0, limits).join('')); } _format.push(_$.splice(0, _loopLen % limits).join('')); } return _format.join(' ');}
小结
第一种办法提供了宰割字符串的串、宰割单位、宰割符。第二种办法默认空格,如果你有好的办法,欢送提供,如果须要转载,请注明出处。