字符集转换:优化分隔符后字符转重复次数的JavaScript函数需求
字符集转换场景下的字符串乘数函数优化
需求说明
字符串中出现分隔符XXX后,后续首个字符对应特定重复次数:原实现仅支持€对应128次、7对应55次,需优化为支持任意字符与对应数值的映射。
原实现代码
function GetMultiplier(str){ var M = (/XXX(.)/g).exec(str)[1]; // 分隔符为XXX示例 if(M=="€") return 128; else if(M=="7") return 55; else return undefined; }; GetMultiplier('abc123XXX€helloworld'); // 返回128
优化方案
原函数硬编码判断的扩展性极差,改用字符-乘数映射对象管理对应关系,新增字符只需在映射表中添加条目即可,无需修改核心逻辑:
// 定义字符与乘数的映射表,可按需扩展 const multiplierMap = { '€': 128, '7': 55, // 新增字符直接在这里添加,比如: // '$': 30, // 'あ': 200 }; function GetMultiplier(str){ // 提取分隔符XXX后的首个字符 const matchResult = /XXX(.)/g.exec(str); // 先判断是否匹配到有效字符,避免报错 if (!matchResult || !matchResult[1]) { return undefined; } const char = matchResult[1]; // 从映射表中获取对应乘数,不存在则返回undefined return multiplierMap[char]; }; // 测试示例 console.log(GetMultiplier('abc123XXX€helloworld')); // 128 console.log(GetMultiplier('testXXX7foo')); // 55 console.log(GetMultiplier('demoXXX$bar')); // undefined(若未在映射表中添加$)
优化点说明
- 扩展性强:新增字符与对应数值时,仅需在
multiplierMap中添加键值对,无需修改函数逻辑 - 鲁棒性提升:增加了匹配结果的有效性判断,避免因字符串中无
XXX或后续无字符导致的报错 - 可读性更高:映射表集中管理对应关系,逻辑清晰易维护
内容的提问来源于stack exchange,提问作者Hilton Siegert
相关产品推荐
相关产品推荐

