如何将camelCase转换为MACRO_CASE?含JavaScript实现方法咨询
将camelCase转换为MACRO_CASE的通用方法及JavaScript实现
通用转换方法
camelCase转MACRO_CASE的核心是拆分驼峰结构并转为大写下划线分隔格式,通用步骤如下:
- 定位驼峰分界点:识别字符串中除首字符外的所有大写字母,这些位置是不同单词的分界
- 插入分隔符:在每个分界点的大写字母前添加下划线
- 统一大小写:将整个字符串转换为大写
- 特殊场景处理:
- 若字符串首字符为大写(如
UserName),直接转为大写即可,无需额外添加下划线 - 若存在连续大写(如
HTTPRequest),仅在连续大写序列的后一个非连续大写字母前添加下划线(最终转为HTTP_REQUEST)
- 若字符串首字符为大写(如
JavaScript实现方案
正则表达式方案(简洁高效)
利用正则快速匹配驼峰分界点,一步完成替换与转大写:
function camelToMacro(str) { return str // 在小写/数字后的大写字母前插入下划线 .replace(/([a-z0-9])([A-Z])/g, '$1_$2') // 处理首字符为大写的情况 .replace(/^([A-Z])/, '_$1') // 转大写并移除可能的开头下划线 .toUpperCase().replace(/^_/, ''); }
测试用例
console.log(camelToMacro('userName')); // USER_NAME console.log(camelToMacro('UserName')); // USER_NAME console.log(camelToMacro('HTTPRequest')); // HTTP_REQUEST console.log(camelToMacro('camelCase123Test')); // CAMEL_CASE123_TEST
手动遍历方案(适合理解原理)
通过逐字符遍历实现转换,逻辑更直观,便于自定义扩展:
function camelToMacroManual(str) { let macroStr = ''; for (let i = 0; i < str.length; i++) { const char = str[i]; // 非首字符的大写字母前添加下划线 if (char === char.toUpperCase() && i !== 0) { macroStr += '_'; } // 统一转为大写 macroStr += char.toUpperCase(); } return macroStr; }
内容的提问来源于stack exchange,提问作者Noel Schenk
相关产品推荐
相关产品推荐

