大小写转换器能把文本改写成十种大小写风格,从全大写的标题到程序员熟悉的 camelCase 标识符。粘贴一个标题、一个变量名或整篇文档,点击一种格式即可完成转换。它让写作者不必重敲标题,也让开发者不用手动调整命名约定。
使用方法
在输入框中键入或粘贴文本,然后点击十个格式按钮中的任意一个。结果立刻出现在下方的只读框里,复制按钮会把它送进剪贴板。清除按钮同时清空两个框。这里没有提交步骤,也不会边打字边转换;选定格式时才执行转换,你可以把结果复制回输入框,连续叠加多种格式。
工具接受多行内容,不同格式按钮会根据风格保留、合并或替换换行,详见下文。
十种格式及适用场景
| 格式 | 示例 | 典型用途 |
|---|---|---|
| UPPER CASE | HELLO WORLD | 标题、强调、正文里的常量 |
| lower case | hello world | 把杂乱的输入统一化 |
| Title Case | Hello World | 文章与章节标题 |
| Sentence case | Hello world | 现代风格指南与行文 |
| camelCase | helloWorld | JavaScript 变量与函数 |
| PascalCase | HelloWorld | 类与 React 组件 |
| snake_case | hello_world | Python、SQL 表名与列名 |
| kebab-case | hello-world | URL、CSS 类名、npm 包名 |
| CONSTANT_CASE | HELLO_WORLD | 环境变量与常量 |
| dot.case | hello.world | 某些配置与属性文件 |
实操示例:同一个短语的十种输出
输入:Hello World
- UPPER CASE:
HELLO WORLD - lower case:
hello world - Title Case:
Hello World - Sentence case:
Hello world - camelCase:
helloWorld - PascalCase:
HelloWorld - snake_case:
hello_world - kebab-case:
hello-world - CONSTANT_CASE:
HELLO_WORLD - dot.case:
hello.world
输入 userName 会暴露不对称的行为。camelCase 得到 username,PascalCase 得到 Username;而 snake_case 得到 user_name,kebab-case 得到 user-name,CONSTANT_CASE 得到 USER_NAME,dot.case 得到 user.name。前两个丢弃了驼峰隆起,后四个读出了它。
正文格式:Title Case 与 Sentence case
Sentence case 先把整串字符转小写,再把开头以及句末标点之后的第一个字母大写。这让行文结果可预测,但会破坏缩写和专有名词。Title Case 使用单词边界规则,把每个单词的首字母大写,其余字母维持输入原样。
因为 Title Case 不规范化单词剩余部分,混合大小写的输入会原样穿透。the QUICK brown Fox 会变成 The QUICK Brown Fox。想让每个单词都是干净的标题形式,先转全小写,再转 Title Case。
Sentence case 有类似的局限。它只把整段输入的第一个单词、以及句号、感叹号、问号之后的单词视为句子开头。换行不算句子边界,所以第二行的首词会保持小写,除非它紧跟在终止符之后。粘贴一组句子时,你可能需要手动把每行首词大写。
多行文本与列表
基于分隔符的格式把换行当作分隔符。把两行转成 snake_case 会得到一行、中间以下划线相连,kebab-case、CONSTANT_CASE 和 dot.case 同理。camelCase 和 PascalCase 也会合并行,因为空白和换行都是边界,会转成下一个单词的首字母大写。若需要保留列表结构,请逐行转换,或使用 Title Case 与 Sentence case,它们不会改动换行。
逐步构建标识符
假设界面上有一个标签 User profile settings,你需要从同一组词得到几种命名约定。
- snake_case:
user_profile_settings,用于数据库列或 Python 变量。 - kebab-case:
user-profile-settings,用于形如/settings/user-profile-settings的路由。 - camelCase:
userProfileSettings,用于 JavaScript 属性。 - CONSTANT_CASE:
USER_PROFILE_SETTINGS,用于环境变量。 - PascalCase:
UserProfileSettings,用于类或组件名。
一个可靠的习惯是:粘贴标签,先点 lower case 压平已有的大小写,再点目标格式,最后复制结果。若短语里含标点或所有格,务必检查输出,因为每个非字母数字字符都会变成分隔符,可能在意想不到的地方合并或切开单词。
一个提醒:先转小写也会抹掉缩写的大小写,API URL v2 会变成 api_url_v2,而不是 API_URL_V2。缩写重要时请手动还原。
常见错误
误以为 camelCase 能拆开已有的驼峰,其实它做不到;以为 Title Case 会把单词剩余字母也转小写;忘记 Sentence case 会压平缩写和产品名;把多行列表转成 snake_case 后才发现各行被合并;把标点当作有意义的内容——分隔符风格会替换每个非字母数字字符,所以 foo.bar 和 foo-bar 在 snake_case 下都变成 foo_bar。另一个陷阱是期待缩写被自动还原:工具没有词典,全小写的 api gateway 只会变成 Api Gateway,而不是 API Gateway。给自己维护一份总要大写的术语清单,转换后逐一修正。
相关工具
常见问题
为什么把 userName 转成 camelCase 会得到 username?
camelCase 和 PascalCase 会先把整段输入转成小写,再把非字母数字字符当作单词边界。已有的驼峰隆起不会被拆开,userName 里没有分隔符可保留,于是塌缩成 username。若想拆解已有的驼峰,请改用 snake_case、kebab-case、CONSTANT_CASE 或 dot.case。
Title Case 会把每个单词剩下的字母也转成小写吗?
不会。Title Case 只把每个单词的首字母大写,其余字母保持原样,所以 hELLO wORLD 会变成 HELLO WORLD,而不是 Hello World。想要干净的标题形式,先转一次全小写再用 Title Case。
转成 snake_case 时换行会怎样?
换行属于非字母数字字符,会被分隔符替换并消失。两行输入会合并成用下划线连接的一整串 snake_case。Title Case 和 Sentence case 只改字母,因此会保留换行。
工具如何处理标识符里的数字?
数字被当作普通单词字符。user2name 在 camelCase 和 snake_case 转换后仍是 user2name,因为数字不构成单词边界。若需要在数字前加分隔符,得自己补上,或者换一种源格式。
哪些格式能正确拆开已有的驼峰单词?
snake_case、kebab-case、CONSTANT_CASE 和 dot.case 都会识别「小写字母后跟大写字母」并插入分隔符,所以 userName 会变成 user_name、user-name、USER_NAME 或 user.name。camelCase 和 PascalCase 不会这样做。
Sentence case 如何处理缩写和多个句子?
Sentence case 先整体转小写,再把字符串首字母、以及句号、感叹号、问号之后的第一个字母大写。缩写在这个过程中也会被转小写,所以 HTTP server 会变成 Http server,除非你事后手动修正。
由 HandyTools Hub 团队审校 · 最后更新