fenzhi-utils
Version:
分值前端项目的js函数库
47 lines (43 loc) • 1.48 kB
JavaScript
import { CustomGetTypeOf } from '../CustomPublic/CustomGetTypeOf.js';
/**
* 姓名脱敏
* 规则:整体保持前一后一,其它隐藏
* @param {string} nameStr 传入的姓名
* @param {string} character 要替换的字符,默认是*
* @returns {string} 返回替换后的姓名
*/
/**
let obj = { a: null, b: undefined };
CustomPersonNameFn(null,'*');// ''
CustomPersonNameFn(undefined,'*');// ''
CustomPersonNameFn(obj.a,'*');// ''
CustomPersonNameFn(obj.b,'*');// ''
CustomPersonNameFn('','*');// ''
CustomPersonNameFn('王','*');// '王'
CustomPersonNameFn('王三','*');// '王*'
CustomPersonNameFn('王老七','*');// '王*七'
CustomPersonNameFn('诸葛孔明','*');// '诸**明'
CustomPersonNameFn('诸葛孔明','-');// '诸--明'
CustomPersonNameFn('艾森豪威尔','*');// '艾***尔'
*/
export function CustomPersonNameFn(nameStr = '', character = '*') {
try {
if (CustomGetTypeOf(nameStr) !== 'string') {
throw new Error('传入的姓名为非字符串');
}
if ([0, 1].includes(nameStr.length)) {
return nameStr;
} else if ([2].includes(nameStr.length)) {
return nameStr.charAt(0) + character;
} else {
// 保留前一后一
return nameStr.split('').reduce((prev, item, index) => {
return (prev += [0, nameStr.length - 1].includes(index)
? item
: character);
}, '');
}
} catch (err) {
console.log(err);
}
}