使用方法
- 打开页面默认就带示例:输入框里是「user login count」,风格选「UPPER_SNAKE」,结果区已经显示 USER_LOGIN_COUNT,你不需要先输入任何东西。
- 把要转换的文本或变量名粘进输入框,选择目标风格:七种之一。
- 在输入框里按 Ctrl 加回车(Mac 上是 Cmd 加回车)也能立即转换,不必点按钮;结果区是当场算出来的,不是固定文案。
- 点「转换」按钮,页面先把输入按空白、标点、连字符切成词,再按所选风格拼装;点「复制结果」把当前风格的结果复制到剪贴板。
- 输入为空时会点名当前字段提示你补全,不会硬凑出一个空串,避免你误以为转换成功。
- 本页不联网、不写本地存储,刷新即回到默认示例,所有转换都在你自己的浏览器里完成,输入内容不会离开设备。
这个 Constant大小写转换器 能解决什么
Constant大小写转换器 解决的是「同一概念要在不同语言规范里换写法」这个日常痛点。后端常量多用 UPPER_SNAKE,前端变量多用 camelCase,CSS 类名常用 kebab-case,数据库字段又偏好 lower_snake,手动改写既慢又容易拼错大小写。本工具一次给出七种写法,复制即用。
第一类用途是跨语言重构与对接。当你把一段 Python 代码搬到 JavaScript,或把接口字段从下划线命名改成驼峰,逐个字改既费眼又易漏;本工具贴进去立即拿到全部风格,挑对应那列复制即可。
第二类用途是团队命名规范统一。新人写常量常分不清该用哪种风格,把候选词丢进来,七种结果并列展示,规范一眼可查,也便于 code review 时对照。
第三类用途是教学与记忆。很多人记不住 camelCase 与 PascalCase 的区别、搞不清 kebab 与 snake 的分隔符;对照表把同一词根的七种形态摆在一起,看一遍就记住规律。
第四类用途是批量生成配置键。写环境变量、配置项、枚举名时,先用自然语言列清单,再统一转成 UPPER_SNAKE 或 lower_snake,效率和一致性都更高。理解这套「切词加拼装」的方法论后,你也能把它迁移到自己脚本里。
第五类用途是文档与教程里的命名示例。写技术文档、录教学视频时,常常需要把同一个概念同时展示七种写法,读者才能直观对比差异。本工具把七种结果并排输出,截图或复制都方便,省去逐一手动改大小写的琐碎。
第六类用途是接口联调时的字段对齐。前后端约定字段命名时,经常出现前端用 camelCase、后端用 lower_snake 的错位,导致解析取不到值。把字段名丢进来双向转换,双方立即拿到对方期望的写法,能减少大量低级联调错误,新人也能快速对齐规范。
第七类用途是教学演示里的反例对照。讲命名规范时,学生常把 snake 和 kebab 搞混,把 camel 和 Pascal 混用。本工具把七种写法同时列在一处,配合下方完整对照表,能直观看到同一词根在不同风格下的真实差异,比口头解释更省力,也便于整理成教学材料。
值得一提的是,本页所有转换都在本地完成,不联网也不上传。你可以放心粘贴项目里的真实变量名,结果不会被任何服务器记录,这点和需要登录的在线转换站不同,更适合处理私密代码。
原理和变量
Constant大小写转换器 的核心是「切词加拼装」,不含随机成分,因此同一段输入永远得到同一组输出,可被手算复核。先按正则 /[\s_\-]+/ 把输入切成词并去掉空串,每个词统一小写化作为基础;再按风格拼装:UPPER_SNAKE 全大写加下划线,lower_snake 全小写加下划线,camelCase 首词全小、其余词首字母大写,PascalCase 每词首字母大写,kebab-case 全小写加短横,UPPERCASE 全大写无分隔,lowercase 全小写无分隔。
为什么要先切词再拼装?因为不同风格的差异只在「分隔符」与「首字母大小写」两处,先拿到干净的词根,后面只是套规则。下面变量表说明各环节含义,方便你对照手算。
| 变量 | 含义 | 说明 |
|---|---|---|
| raw | 原始输入 | 文本或变量名 |
| words | 切出的词 | 按空白、标点、连字符切并去空 |
| style | 目标风格 | 七选一 |
| sep | 分隔符 | _ 或 - 或无 |
| cap | 首字母规则 | 全小、首大、全大 |
完整示例
下面这组示例全部由页面算法原样得出,可直接对照你的手算。输入「user login count」,切词得 [user, login, count]:UPPER_SNAKE = USER_LOGIN_COUNT,lower_snake = user_login_count,camelCase = userLoginCount,PascalCase = UserLoginCount,kebab-case = user-login-count,UPPERCASE = USERLOGINCOUNT,lowercase = userlogincount。与上方结果区、下方卡片和对照表完全自洽,全程无随机、可逐字复核。如果你把输入换成「my variable name」,七种结果会同步变化,但拼装规则始终不变,这正是切词加拼装思路稳定可靠的体现。
如果你想验证手算,只要把输入按空格、下划线、连字符拆成词,再按上面的规则套首字母大小写与分隔符,必然和本工具一致。这个切词法也是你在不支持本页的环境里手动复现结果的可靠办法。
USER_LOGIN_COUNT
userLoginCount
user-login-count
UserLoginCount
user_login_count
USERLOGINCOUNT
示例输入:user login count(默认风格 UPPER_SNAKE) USER_LOGIN_COUNT lower_snake:user_login_count camelCase:userLoginCount PascalCase:UserLoginCount kebab-case:user-login-count UPPERCASE:USERLOGINCOUNT lowercase:userlogincount
七种风格对照表
下表列出常见输入对应的七种风格结果(共 14 行),前 12 行直接展示,点「加载更多」展开剩余项。你可以一键导出 CSV(带 BOM,Excel 直接认中文)或复制 TSV 粘进表格软件。表里所有结果都由本页同一逻辑得出,无随机、可复核。
| 输入 | UPPER_SNAKE | lower_snake | camelCase | PascalCase | kebab-case | UPPERCASE | lowercase |
|---|---|---|---|---|---|---|---|
| user login count | USER_LOGIN_COUNT | user_login_count | userLoginCount | UserLoginCount | user-login-count | USERLOGINCOUNT | userlogincount |
| my variable name | MY_VARIABLE_NAME | my_variable_name | myVariableName | MyVariableName | my-variable-name | MYVARIABLENAME | myvariablename |
| get user id | GET_USER_ID | get_user_id | getUserId | GetUserId | get-user-id | GETUSERID | getuserid |
| order total price | ORDER_TOTAL_PRICE | order_total_price | orderTotalPrice | OrderTotalPrice | order-total-price | ORDERTOTALPRICE | ordertotalprice |
| api response data | API_RESPONSE_DATA | api_response_data | apiResponseData | ApiResponseData | api-response-data | APIRESPONSEDATA | apiresponsedata |
| first name | FIRST_NAME | first_name | firstName | FirstName | first-name | FIRSTNAME | firstname |
| last login time | LAST_LOGIN_TIME | last_login_time | lastLoginTime | LastLoginTime | last-login-time | LASTLOGINTIME | lastlogintime |
| product sku code | PRODUCT_SKU_CODE | product_sku_code | productSkuCode | ProductSkuCode | product-sku-code | PRODUCTSKUCODE | productskucode |
| current user count | CURRENT_USER_COUNT | current_user_count | currentUserCount | CurrentUserCount | current-user-count | CURRENTUSERCOUNT | currentusercount |
| max file size | MAX_FILE_SIZE | max_file_size | maxFileSize | MaxFileSize | max-file-size | MAXFILESIZE | maxfilesize |
| new order list | NEW_ORDER_LIST | new_order_list | newOrderList | NewOrderList | new-order-list | NEWORDERLIST | neworderlist |
| search result page | SEARCH_RESULT_PAGE | search_result_page | searchResultPage | SearchResultPage | search-result-page | SEARCHRESULTPAGE | searchresultpage |
| old cache key | OLD_CACHE_KEY | old_cache_key | oldCacheKey | OldCacheKey | old-cache-key | OLDCACHEKEY | oldcachekey |
| retry count limit | RETRY_COUNT_LIMIT | retry_count_limit | retryCountLimit | RetryCountLimit | retry-count-limit | RETRYCOUNTLIMIT | retrycountlimit |
结果边界与错误提示
- 输入为空时,提示「输入文本「」不合法:不能为空」,页面不会自作主张编出一个空串,避免你误以为转换成功。
- 输入只有分隔符(如全空格或全下划线)时,切词后无有效词,会提示「输入文本不合法:未找到可转换的词」,不会输出空结果。
- 七种风格里 camelCase 与 PascalCase 的差异只在首词首字母,工具会严格区分,不会把两者混为一谈。
- UPPERCASE 与 lowercase 不含任何分隔符,多词会直接连成一串,这是预期行为而非错误。
- 结果区与错误区都带 role="alert" 语义,内容一变就会被屏幕阅读器播报;所有转换本地完成,不联网也不写存储,刷新即还原默认示例。
- 切词按空白、标点、连字符进行,连续多个分隔符会被当作一个边界,不会产出空词,保证结果干净。
- CSV 导出在文件头写入 UTF-8 BOM(\ufeff),Excel 打开中文不会乱码;TSV 复制是纯制表符分隔文本,粘进任意表格软件都会自动分列。
- 本工具只做命名风格互转,不对词意做任何翻译或纠正;若输入含非单词字符,会被当作分隔处理掉。
常见问题
camelCase 和 PascalCase 有什么区别?
只差首词首字母:camelCase 首词全小写(如 userLoginCount),PascalCase 每词首字母都大写(如 UserLoginCount)。本工具严格按此规则转换,不会混用。
为什么结果每次都一样,没有随机?
本工具是纯切词加拼装,不含随机算法,同一段输入必然得到同一组输出。这样你才能在别处手算复核,也方便多文件保持命名一致。
kebab-case 和 lower_snake 只是分隔符不同吗?
对,两者都全小写,区别仅在于分隔符:kebab 用短横「-」,snake 用下划线「_」。本工具按对应规则拼装,结果可直接用于 CSS 类名或数据库字段。
输入里有下划线会怎样?
下划线被视为分隔符,会参与切词。例如「user_login_count」会被切成 [user, login, count],再按所选风格重拼,所以你也能用它来把一种风格转成另一种。
UPPERCASE 没有分隔符会不会难读?
会,但这是该风格的预期形态,常见于宏与常量定义。若你需要可读性,建议用 UPPER_SNAKE 保留下划线;本工具两种都给,按需复制。
我的变量名会上传吗?
不会。所有文本只在浏览器本地转换,不联网、不写存储,刷新即还原默认示例,没有任何数据离开你的设备,可以放心粘贴项目真实命名。
导出的 CSV 为什么带 BOM?
因为 Excel 打开无 BOM 的 UTF-8 文件时常把中文显示成乱码,BOM 能让 Excel 正确识别编码。TSV 复制走剪贴板不经文件,所以不需要 BOM。
能批量转很多词吗?
本页一次处理一个短语。若需批量,把多组词分行或分次处理即可;理解「切词加拼装」的方法论后,你也能把它写成脚本批量跑。