你是怎么分割银行卡号的,通用方法?
说明,一下代码均通过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(' ');
}
小结
第一种方法提供了分割字符串的串、分割单位、分割符。第二种方法默认空格,如果你有好的方法,欢迎提供,如果需要转载,请注明出处。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。