当前位置: 首页 > news >正文

公司名称打码

/** * 公司名称打码处理函数 * 覆盖场景: * 1. 空值/非字符串处理 * 2. 1-10+字不同长度策略 * 3. 包含特殊字符/空格的名称 * 4. 中英文混合名称(按字符长度处理) * 5. 边界值处理(如刚好4字、刚好8字等) * @param {string} name 原始公司名称 * @param {Object} [options] 可选配置 * @param {string} [options.maskChar=*] 打码字符 * @param {boolean} [options.keepSpecialChar=false] 是否保留特殊字符位置(仅打码汉字/字母) * @returns {string} 打码后的名称 */ const maskCompanyName = (name, options = {}) => { // 默认配置 const { maskChar = '*', keepSpecialChar = false } = options; // 1. 空值处理:null/undefined/空字符串/非字符串类型 if (!name || typeof name !== 'string') { return ''; } // 去除首尾空格(中间空格保留) const trimmedName = name.trim(); if (trimmedName.length === 0) { return ''; } const length = trimmedName.length; let maskedName = ''; // 2. 按长度分级处理(覆盖1-10+字所有场景) if (length === 1) { // 1个字:直接打码(避免泄露) maskedName = maskChar; } else if (length === 2) { // 2个字:首字显示 + 1个打码 maskedName = trimmedName.charAt(0) + maskChar; } else if (length === 3) { // 3个字:首字 + 1个打码 + 尾字 maskedName = trimmedName.charAt(0) + maskChar + trimmedName.charAt(2); } else if (length === 4) { // 4个字:首字 + 2个打码 + 尾字(核心优化点) maskedName = trimmedName.charAt(0) + maskChar.repeat(2) + trimmedName.charAt(3); } else if (length >= 5 && length <= 8) { // 5-8字:前2字 + 3个打码 + 尾2字 const prefix = trimmedName.substring(0, 2); const suffix = trimmedName.substring(length - 2); maskedName = `${prefix}${maskChar.repeat(3)}${suffix}`; } else if (length >= 9 && length <= 12) { // 9-12字:前3字 + 4个打码 + 尾3字 const prefix = trimmedName.substring(0, 3); const suffix = trimmedName.substring(length - 3); maskedName = `${prefix}${maskChar.repeat(4)}${suffix}`; } else { // 12字以上:前4字 + 5个打码 + 尾4字(超长名称) const prefix = trimmedName.substring(0, 4); const suffix = trimmedName.substring(length - 4); maskedName = `${prefix}${maskChar.repeat(5)}${suffix}`; } // 3. 特殊处理:保留特殊字符位置(如括号、横线等) if (keepSpecialChar) { const specialCharRegex = /[^a-zA-Z0-9\u4e00-\u9fa5]/; return trimmedName.split('').map((char, index) => { // 特殊字符保留原样,其他字符用打码结果替换 return specialCharRegex.test(char) ? char : maskedName[index] || maskChar; }).join(''); } return maskedName; }; // ================ 测试用例 ================ console.log("1字:", maskCompanyName("企")); // * console.log("2字:", maskCompanyName("企业")); // 企* console.log("3字:", maskCompanyName("企业家")); // 企*家 console.log("4字:", maskCompanyName("科技有限公司")); // 科**司 console.log("5字:", maskCompanyName("北京科技有限公司")); // 北京***公司 console.log("8字:", maskCompanyName("北京中关村科技有限公司")); // 北京***公司 console.log("9字:", maskCompanyName("北京中关村科技发展有限公司")); // 北京中****限公司 console.log("13字:", maskCompanyName("北京中关村科技发展集团股份有限公司")); // 北京中关村*****份有限公司 console.log("含特殊字符:", maskCompanyName("北京(中关村)科技有限公司", { keepSpecialChar: true })); // 北*(中***)限公司 console.log("空值:", maskCompanyName(null)); // "" console.log("空格:", maskCompanyName(" 企业 ")); // 企* console.log("自定义打码符:", maskCompanyName("科技有限公司", { maskChar: '#' })); // 科##司
const maskedCompanyName = maskCompanyName(originalName); console.log(maskedCompanyName);
http://www.cnnetsun.cn/news/8415.html

相关文章:

  • 终极电商后台管理系统:mall-admin-web完整使用指南
  • 【量子模拟器开发新突破】:VSCode扩展实战指南,提升开发效率90%
  • 关于内联函数的理解学习
  • Whisper部署实战手册:从环境配置到性能调优的完整解决方案
  • 昇腾AI:不只是一颗芯片,更是一个时代的算力答案
  • 6、网络服务枚举与安全防护全解析
  • 8、Windows系统认证攻击与防范全解析
  • Linux网络参数:现代内核的智能优化之道
  • C# 随机数添加数组对象和数组的查询方法
  • RouterOS 7.19 x86深度技术解析:网络协议优化与系统稳定性关键技术
  • 你还在盲调量子电路?这3个VSCode插件让你秒变QML调试高手
  • RAG知识库——怎么构建一个高质量的知识库
  • 以向善价值观构建数字信任,数美2025 AI风控大会重磅发布“AI风控新范式”
  • 终极嵌入式按键解决方案:MultiButton状态机库实战指南
  • ZyPlayer终极配置指南:3步打造专属影院级体验
  • gmhelper:5分钟快速掌握国密算法SM2/SM3/SM4的完整应用方案
  • 19、高级Shell编程与正则表达式过滤器
  • PHP兼容性检查工具完整指南
  • 基于元胞自动机交通模型的三车道Matlab代码:模拟车辆多车道行驶及可视化分析系统
  • 豆包手机二手价被炒到3.6万元;被曝开发“芯片定位”技术,英伟达:这不是后门;千问月活突破3000万 | 极客头条
  • Wan2.2-T2V-A14B适合哪些行业?五大垂直领域推荐
  • 基于西门子S7-200PLC的自动灌溉系统组态王组态 带解释的梯形图程序,接线图原理图图纸,io分配
  • 机器学习驱动的智能化电池管理技术与应用
  • 如何优化MinerU项目的PaddleOCR模型部署效率
  • SVG.js动画开发终极指南:从入门到精通
  • Python 对象序列化与存储库pickle详细介绍
  • 圣诞快乐!来自代码世界的祝福
  • 一致性的威力:AI如何在B/G端释放数据治理的真正生产力
  • 知行之桥三种接口详解:Webhook、Flow API 与 Admin API
  • CPFEM晶塑动态展示:VUMAT子程序高效率与多维度模型应用测试