宝塔拨测博客拨测技术博客
宝塔拨测

camelCase 怎么转下划线?14 种命名格式与三个会丢字符的坑

把 camelCase 转成下划线不用手改:贴进大小写转换工具,结果里「蛇形命名(snake_case)」那一行就是 user_login_count,「常量命名(CONSTANT_CASE)」那一行是全大写的 USER_LOGIN_COUNT。反方向也一样,输入 USER_LOGIN_COUNT,驼峰行直接给 userLoginCount。

工具页面写的是「输入任意文本,实时查看 14 种命名风格的转换结果」,下面 14 行结果随输入即时刷新,每行右侧有复制按钮。所有转换都在浏览器本地完成,输入的内容不上传服务器。

本文的每个输出都来自 2026-11-09 14:36 的同一次运行,截图与正文数字同源。

14 种格式各是什么,用在哪

以 userLoginCount 为输入,14 行结果的实测输出如下:

格式(页面标签) 实测输出 常见用处
小写 Lowercase userlogincount 大小写不敏感的键、邮箱地址
大写 Uppercase USERLOGINCOUNT 展示文本,不适合做标识符
驼峰 CamelCase userLoginCount JS / Java 的变量与对象属性
首字母大写 Capital Case user Login Count 句子里嵌标识符
常量 CONSTANT_CASE USER_LOGIN_COUNT 环境变量、配置常量
点分隔 dot.case user.login.count properties 这类层级配置项
标题 Header-Case User-Login-Count HTTP 头名、部分代码规范
空格分隔 no case user login count 给人看的展示文本
参数 param-case user-login-count URL 参数、CSS 类名
帕斯卡 PascalCase UserLoginCount 类名、前端组件名
路径 path/case user/login/count 路由片段、层级路径
句首大写 Sentence case User login count 标题、句子开头
蛇形 snake_case user_login_count Python 变量、数据库字段
交替大小写 aLtErNaTiNg UsErLoGiNcOuNt 仅作演示

输入 userLoginCount 后,页面实时给出 14 种命名格式的结果

有一点容易看错:首字母大写不是帕斯卡。它的第一个词是小写(user Login Count),只有第二个词往后才首字母大写。要写类名或组件名,用帕斯卡那一行。

下划线转驼峰、常量转驼峰:同一个输入一起给

粘 USER_LOGIN_COUNT 进去,三种最常用的结果同时出现:驼峰 userLoginCount、帕斯卡 UserLoginCount、参数命名 user-login-count,蛇形和常量两行保持原样。所以数据库字段名、环境变量名要转成前端属性名时,一次复制就行,不用来回切。

输入 USER_LOGIN_COUNT 后,驼峰与帕斯卡两行直接可用

坑一:全大写缩写被抹平,而且转不回去

输入 userID utf8 HTTPServer,实测结果:

格式 实测输出
驼峰 CamelCase userIdUtf8Httpserver
帕斯卡 PascalCase UserIdUtf8Httpserver
常量 CONSTANT_CASE USER_ID_UTF_8_HTTPSERVER
蛇形 snake_case user_id_utf_8_httpserver
标题 Header-Case User-Id-Utf-8-Httpserver

原因在切词规则:它只在「小写字母紧跟大写字母」的位置断开。ID、HTTP 这类全大写连写里没有小写字母,不会被单独切成一个词,于是 HTTPServer 整段被当成一个词,再按「首字母大写、其余小写」处理就成了 Httpserver。

输入含大写缩写的字符串,驼峰与蛇形结果里的 ID、HTTP 都被改成首字母大写形式

这一步是不可逆的:把 httpserver 再粘回去,任何一行都不会变回 HTTPServer。所以拿它批量改含缩写的标识符要小心——HTTPClient、userID、parseXML 这类名字改完会丢大写信息,得人工过一遍,或者按项目约定先把缩写统一成 Http、Id 这种写法。

坑二:数字会被切开,驼峰与蛇形对不上

同一个 utf8,在两种格式里给出的结果不一样:

  • 蛇形:user_id_utf_8_httpserver(utf 与 8 分成两段)
  • 驼峰:userIdUtf8Httpserver(utf8 连在一起)

这是切词阶段在字母与数字之间、数字与字母之间插了分隔造成的:utf8 被拆成 utf 和 8,带下划线和点号的格式会把这个分隔显出来,驼峰和帕斯卡因为没有分隔符,又合回去。

后果是接口联调时字段名对不上:后端按蛇形命名导出 utf_8,前端按驼峰取 utf8,两边看着都「转换对了」,实际拼不到一起。凡是带数字的标识符(版本号 v2、base64、sha256 这类),转换后都要核对一遍分段位置,别只看字面像不像。

坑三:中文被当成分隔符,整段丢掉

输入 网站标题 test,14 行结果里 11 行只剩 test:

格式 实测输出
驼峰 CamelCase test
常量 CONSTANT_CASE TEST
蛇形 snake_case test
帕斯卡 PascalCase Test
小写 Lowercase 网站标题 test
大写 Uppercase 网站标题 TEST
交替大小写 网站标题 tEsT

因为那 11 种格式先按拉丁字母和数字切词,中文不在这个范围内,会被当成分隔符一起丢掉,而不是报错或提示——输出看着正常,字符却少了。

输入中文加英文,多数结果行里的中文消失,只剩 test

所以这个工具适合处理纯英文标识符,不适合拿来整理中文标题或中英混排的文本。只有小写、大写、交替大小写三行是对整串字符逐个处理,中文会原样保留。

交替大小写不按词处理

其余 13 种格式都是先切词再拼,交替大小写是逐字符处理的:USER_LOGIN_COUNT 得到 UsEr_lOgIn_cOuNt,下划线原样不动,字母每隔一个转大写;userLoginCount 得到 UsErLoGiNcOuNt。它主要用来做效果演示,不适合当命名格式用。

什么情况下别用它

  • 改变量名、函数名:用编辑器的重命名重构。这个工具只改字符串,不会改引用,而且缩写信息会丢(见坑一),改完还得人工核对。
  • 中文或含非拉丁字符的文本:11 行结果会静默丢字符,别拿它做标题美化。
  • 要严格符合某套命名规范:工具给的是形式,缩写怎么写、数字怎么分段,得按项目规范(比如 Python 的 PEP 8 推荐蛇形命名、Java 常量用全大写)人工确认,工具不替你做合规判断。

纯英文、无缩写的标识符,它是最好用的一档:一个输入框,14 种格式同时给全,复制即用。

常见问题

camelCase 怎么转成 snake_case?

把 userLoginCount 粘进宝塔的大小写转换工具,结果里的「蛇形命名(snake_case)」一行就是 user_login_count,「常量命名(CONSTANT_CASE)」一行是 USER_LOGIN_COUNT。转换实时进行,不用点提交。

下划线命名怎么转回驼峰?

反方向同样直接给。实测输入 USER_LOGIN_COUNT,驼峰命名一行输出 userLoginCount,帕斯卡命名一行输出 UserLoginCount,参数命名一行输出 user-login-count。

为什么 userID 转出来是 userId,大写 ID 没了?

工具的切词只在小写字母紧跟大写字母的位置断开,ID、HTTP 这类全大写连写里没有小写字母,不会被单独切出来,随后每个词按「首字母大写、其余小写」处理,ID 就成了 Id。实测输入 userID utf8 HTTPServer,驼峰结果是 userIdUtf8Httpserver,HTTPServer 整段变成 Httpserver,转回去也还原不成 HTTPServer,属于不可逆的丢失。

utf8 为什么在蛇形命名里变成 utf_8?

切词阶段会在字母与数字之间、数字与字母之间插入分隔,utf8 被切成 utf 和 8 两段,所以蛇形结果里是 utf_8。驼峰拼接时中间没有分隔符,又合成 utf8,于是同一份输入在两种格式里对数字的处理看起来不一致。

输入中文为什么大部分结果只剩英文?

14 种格式里有 11 种先按「拉丁字母与数字」切词,中文不在这个范围内,会被当成分隔符丢掉,只剩下 test。只有小写、大写、交替大小写三行是对整串字符逐个处理,中文会原样保留。实测输入「网站标题 test」,驼峰、蛇形、点分等行都只有 test。

转换会把内容上传到服务器吗?

不会。工具页面写明所有转换均在浏览器本地完成,不会上传到服务器;实测输入内容在页面内即时变更结果,没有等待网络往返。

首字母大写(Capital Case)和帕斯卡命名有什么区别?

首字母大写只把除第一个词以外的词首字母大写,第一个词反而是小写:输入 userLoginCount 得到 user Login Count。帕斯卡命名每个词都大写且不带分隔:UserLoginCount。写类名、组件名要用帕斯卡。

驼峰转下划线命名格式转换snake_casecamelCase大小写转换宝塔拨测