字符串隐藏部分内容
需求
说明实现一个方法,接收一个字符串和一个符号,将字符串中间四位按指定符号隐藏
1.符号无指定时使用星号()
2.接收的字符串小于或等于四位时,返回同样长度的符号串,等同
于全隐藏,如123,隐藏后是**
3.字符串长度是大于四位的奇数时,如123456789,隐藏后是
12***789奇数多出来的一位在末尾
let arrList = ['12345', 'lxlxbaba', 'lx', 'summer', '855520cfoni'];
// 方法一 // 通过遍历 查找到属于范围内的数据进行替换
function mask(str, rep = '*') {
let strArr = str.split('');
let leg = strArr.length;
let result = [];
let num = Math.ceil((leg - 4) / 2);
for (let i = 0; i < leg; i++) {
if (leg - num - 4 - 1 >= i || i >= leg - num) {
result.push(strArr[i]);
} else {
result.push(rep);
}
}
return result.join('');
}
// 方法二 通过替换固定范围内容
function mask2(str, rep = '*') {
let num = Math.ceil((str.length - 4) / 2); // 截取起点
let start = str.length - 4 - num;
let end = str.length - num;
start = start > 0 ? start : 0;
let strArr = str.split('');
for (let i = start; i < end; i++) {
strArr[i] = rep;
}
return strArr.join('');
}
// 方法三 截取出不需要隐藏的部分进行拼接
function mask3(str, rep = '*') {
let start = Math.floor((str.length - 4) / 2); // 向下取整数做开始索引
let strss = new Array((str.length >= 4 ? 4 : str.length) + 1).join(rep); // 生成替换长度字符串
if (str.length <= 4) {
return strss;
} else {
return str.substr(0, start) + strss + str.substr(start + 4, str.length);
}
}