JS隐藏姓名、电话和身份证的关键字,使用 * 号显示

在网页开发过程中,考虑到用户信息安全问题,就需要对后台获取的数据做一些处理。在某个项目中遇到了这样的需求,因此做一个记录。
需求:将姓名和电话做关键字隐藏。例如:张三显示为(张*);王可儿显示为(王儿);上官婉儿显示为(**婉儿);13455559812显示为(134***9812)。首先想到的是字符串的截取方法,截取需要显示的数据,没有截取到的就用 * 号表示。
let name = "张三";
let obtain = name.substring(0,1) + '*'; // 张*
let name2 = "王可儿"
let obtain2 = name2.substring(0,1) + '*' + name2.substring(2); // 王*儿
let name3 = "上官婉儿"
let obtain3 = '**' + name3.substring(2); // **婉儿
let phone = "13455559812"
let obtain4 = phone.substring(0,3) + '****' + phone.substring(7); // 134****9812

可是这样代码就变得有点冗杂,而且不可复用。于是就根据上面截取的思路给它简单封装一下下啦。。。

// str:变量;frontNum:前面显示位数;afterNum:后面显示位数
function commonFn(str,frontNum,afterNum) {    
    let len = str.length - frontNum - afterNum;
    let hide = '';
    for (let i = 0; i < len; i++) {
        hide += '*';
    }
    return str.substring(0,frontNum) + hide + str.substring(str.length - afterNum);
}

substr(startIndex,length) / substring(startIndex,toIndex) 这两个截取方法都是可以使用的。不过两者之间有些微区别

  • 相同点:当只有一个参数时,返回值为该参数位置到末尾的字符串
let strs = "abcdefghijklmn" 
let sbustrStr = strs.substr(5); // fghijklmn
let substringStr = strs.substring(5); // fghijklmn
  • 不同点:当接受两个参数时,substr(startIndex,length)返回值是索引 startIndex 开始,长度为 length 的字符串; substring(startIndex,toIndex)返回值为索引 startIndex 开始,toIndex 索引结束(不包含toIndex索引的值)的字符串。
let strs2 = "abcdefghijklmn" 
let sbustrStr2 = strs2.substr(3,6); // defghi
let substringStr2 = strs2.substring(3,6); // def

至此,就结束了!

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页