Skip to content
扫码开始移动端阅读
字符串脱敏
共
250
字 需要≈
1.25
分钟 手撕面试题
需求
字符串脱敏
1 位不脱
2-4位字符:第 1 位脱敏,比如“南山区”脱敏后为“*山区”
5-9 位字符,第 3-5 位字符脱敏,比如“南山区科技二路”脱敏后为“南山***二路”
10 位以上,倒数 3-5 位脱敏,比如“南山区海天二路68爱德华小区”脱敏为“南山区海天二路68***小区”
实现
js
const maskString = (str) => {
// 辅助函数,用于在指定位置插入掩码
const maskPart = (str, min, max) => {
const end = Math.min(max, str.length);
return str.slice(0, min) + "***" + str.slice(end);
};
const length = str.length;
// 根据字符串长度选择不同的掩码策略
const funList = {
[`${length > 9}`]: (str) => maskPart(str, str.length - 8, str.length - 5),
[`${length <= 9}`]: (str) => maskPart(str, 2, 5),
[`${length <= 4}`]: (str) => "*" + str.slice(1),
[`${length === 1}`]: (str) => str,
};
return funList[`${true}`](str);
};
结语
感兴趣的小伙伴可以手动实现一下。欢迎贡献更好的解决方案。
转载请注明来源:LeeDaisen : 《字符串脱敏》