请用 JavaScript 编写一个函数,实现下划线命名与驼峰命名的互相转换,并给出具体代码。
考察说明
考查 JavaScript 字符串处理、正则表达式及命名风格转换的实现能力。
回答思路
- 【回答框架 1】转换函数的核心是识别分隔符并调整大小写。下划线转驼峰时,可用正则匹配下划线及其后的字母,将其替换为大写形式;驼峰转下划线时,匹配大写字母并在其前插入下划线后转为小写。
- 【回答框架 2】实现可采用字符串的 replace 方法与正则表达式。例如下划线转驼峰:str.replace(/_([a-z])/g, (_, c) => c.toUpperCase());驼峰转下划线:str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase()。需注意边界情况,如字符串已为驼峰或下划线,转换应保持语义不变。
- 【回答框架 3】处理时需考虑性能,正则一次遍历即可完成,时间复杂度 O(n)。若输入非字符串,应做类型校验或安全转换。
- 【回答框架 4】可扩展支持自定义分隔符,但题目限定下划线与驼峰,保持简单准确即可。
- 【关键点 1】下划线转驼峰使用正则 _([a-z]) 替换为大写字母。
- 【关键点 2】驼峰转下划线使用正则 ([a-z])([A-Z]) 插入下划线并转小写。
- 【关键点 3】保证输入为字符串,处理空字符串和连续下划线等边界情况。
- 【易错点 1】驼峰转下划线时,若连续大写如 API,正则可能产生多余下划线,需考虑缩写场景。
- 【易错点 2】正则替换时若未使用全局标志 g,只处理第一处匹配。
- 【易错点 3】转换后可能形成非预期结果,如已有下划线又与驼峰混合,需明确输入规范。