关于javascript:你是怎么分割银行卡号的通用方法

你是怎么宰割银行卡号的,通用办法?

阐明,一下代码均通过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(' ');
}

小结

第一种办法提供了宰割字符串的串、宰割单位、宰割符。第二种办法默认空格,如果你有好的办法,欢送提供,如果须要转载,请注明出处。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理