大小写转换器
在 UPPER、lower、Title、camelCase、snake_case 等之间转换文本。
选择大小写
关于文本大小写转换
文本大小写转换是更改文本大小写样式的过程。不同的上下文需要不同的大小写约定。Title Case 是标题和书名的标准。camelCase 和 PascalCase 在编程中广泛用于变量和类名。snake_case 在 Python 和数据库列名中常见。kebab-case 是 CSS 类名和 URL slug 的标准。
此工具可在您输入时立即在 11 种不同的大小写样式之间转换。所有处理都在您的浏览器本地进行 · 不会向任何服务器发送任何内容。
常见用途
- 在编程约定之间转换变量名
- 修复意外键入的 CAPS LOCK 文本
- 使用 kebab-case 生成 URL 友好的 slug
- 将标题标准化为 Title Case
- 以 snake_case 创建数据库列名
- 将 CSS 类名转换为正确的格式
常见问题
camelCase 和 PascalCase 有什么区别?
camelCase 以小写字母开头,每个后续单词的首字母大写(例如 "myVariableName")。PascalCase 将每个单词(包括第一个)首字母大写(例如 "MyVariableName")。camelCase 通常用于 JavaScript 变量和函数,而 PascalCase 在大多数语言中用于类名。
CONSTANT_CASE 用于什么?
CONSTANT_CASE(也称为 SCREAMING_SNAKE_CASE)使用所有大写字母,单词之间用下划线分隔。它是大多数编程语言中常量和环境变量的标准约定(例如 MAX_RETRIES、API_BASE_URL)。
此工具是否处理特殊字符?
是的。在大多数模式下,非字母字符(数字、标点符号、符号)按原样保留。对于 camelCase 和 snake_case 等程序员模式,空格和分隔符用于识别单词边界。
什么是文本大小写转换?
文本大小写转换是在不改变字母本身的情况下,转换字符串中字母的大小写形式的过程。同一个词「absolutool」可以写成 ABSOLUTOOL(全大写用于强调)、absolutool(小写用于正文)、Absolutool(标题大小写用于标题)、aBSOLUTOOL(反向大小写用于错字)、甚至 AbSoLuToOl(交替大小写用于戏谑表情包)。每种大小写都承载着数百年排印和计算约定累积下来的含义。
这个转换器一键处理 11 种风格:小写、大写、标题大小写、句子大小写、camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE、aLtErNaTiNg 和 iNVERSE。程序员风格(camel、Pascal、snake、kebab、constant)从空格、连字符、下划线或现有大写字母自动检测词边界,所以您可以粘贴混合输入并获得干净的输出,无需手动标记分隔。
一切都发生在您的浏览器中。您粘贴的文本永远不会离开您的设备,没有 API 调用,没有服务器处理,转换后的输出直接写入只读结果框中,方便一键复制。该工具只有几 KB 的 JavaScript,页面加载后无需网络连接即可在任何现代浏览器中运行。
转换器内部有什么
界面有三个部分:顶部一排 11 个大小写按钮、一个用于粘贴原始文本的输入文本区域,以及下方一个显示转换结果的只读输出文本区域。活动按钮被高亮显示,所以您一眼就能看到当前应用的是哪种大小写。切换大小写是即时的,没有提交步骤,没有页面重新加载。
在输入区域下方,一个实时计数器在您输入时显示字符和单词的数量。这对转换代码标识符(变量名往往较短)与转换散文(标题往往有软性词数上限)都很有用。计数器忽略前后空格,所以数字与大多数文本编辑器报告的一致。
底部有两个操作按钮:复制结果通过 Clipboard API 将输出写入您的剪贴板,清除清空两个文本区域。没有保存,没有历史记录,没有撤销。如果您意外清除,请再次粘贴源文本。该工具按设计将每个会话视为短暂的,所以 localStorage 或 cookies 中不会保留任何内容。
历史和背景
电报强制使用全大写(1844)
塞缪尔·摩尔斯 1844 年的电报使用单一大小写字母表,因为当时不存在 shift 机制。操作员把一切都写成大写,这一惯例在电缆、海军信号和早期电传打字机中持续到 1960 年代。紧急、全大写消息的美学直接源于这种技术限制,而非风格选择。
Shift 键在 Remington 2 上出现(1878)
Remington 2 型号在 1878 年引入了 shift 键,让打字员可以在同一台机器上生成大写和小写字母。在此之前,打字机只能打印一种大小写。shift 机制标准化了 ASCII 后来数字化编码的双大小写书写系统,本页面上的大小写转换按钮仍然遵循该系统。
ASCII 分配大小写位(1963)
ANSI 在 1963 年发布并在 1967 年修订的 ASCII 故意将大写 A 到 Z(65 到 90)和小写 a 到 z(97 到 122)精确放置在相距 32 的位置,所以翻转一个位即可切换大小写。这种位级关系是为什么大小写转换是 CPU 可以执行的最廉价的操作之一,也是为什么每种编程语言都有内置函数来处理它。
Unix 推广 snake_case(1969)
Bell Labs 于 1969 年发布的 Unix 在 C 标准库中使用小写命令名和下划线分隔的标识符(str_cpy、mem_alloc、file_open)。下划线绕过了 shell 的空格作为参数分隔符的限制,以及早期标识符不能包含连字符的问题。这一惯例传播到 Python(1991),在那里成为 PEP 8 中的官方风格,以及 Ruby、Rust 和大多数数据库模式。
Smalltalk 引入 camelCase(1972 到 1980)
Alan Kay 在 Xerox PARC 的团队从 1972 年开始构建 Smalltalk,他们使用 camelCase 来命名方法,如 addFirst: 和 removeLast:。这一惯例在 1984 年传到了 Objective-C,然后在 1995 年传到了 Java(Sun 的编码风格指南将其强制规定),并在 1995 年通过直接继承 Java 命名传到了 JavaScript。今天,camelCase 是大约一半生产代码中变量和方法的默认值。
CSS 选择 kebab-case(1996)
Hakon Wium Lie 的 CSS 规范于 1996 年 12 月作为 W3C 推荐发布,为多词属性名选择了连字符:background-color、font-family、text-align。这个选择是由可读性驱动的,连字符在小尺寸下比下划线扫描更快,而且 CSS 值在未引用形式中不能包含下划线。kebab-case 后来成为 URL 别名、HTML data 属性和大多数静态站点永久链接的默认值。
实用工作流
JavaScript 标识符转换
您继承了一个使用 fetch_user_data 的 Python 片段,需要将其移植到 JavaScript。粘贴 fetch_user_data,点击 camelCase,得到 fetchUserData。该工具为您处理下划线到大写的转换,无需手动编辑。同样的流程对 Python 到 JavaScript 的风格迁移也反向适用。
Python 标识符转换
JavaScript API 返回 getUserById,您想在 Python 包装器中将其公开为 get_user_by_id。粘贴,点击 snake_case,复制。该工具在每个大写到小写的边界插入下划线,并将所有字母小写,完全符合 PEP 8。
URL 别名生成
您写了一篇标题为「10 个 kebab-case 在 URL 中胜出的理由」的博客文章,需要一个永久链接。粘贴标题,点击 kebab-case,得到「10-个-kebab-case-在-url-中-胜出-的-理由」。您可能需要根据您的 CMS 手动删除前导数字或特殊字符,但大部分工作已完成。
标题首字母大写
一篇文章标题草稿写着「what is css grid and when to use it」。点击标题大小写得到「What Is Css Grid And When To Use It」。您可能需要根据 AP 或 Chicago 风格手动将一些连接词(a、the、to、and)小写,但转换处理了 90% 的击键。
修复意外按下的大写锁定
您打开了大写锁定输入了整段文字,直到停下才注意到。粘贴全大写文本,点击句子大小写得到首字母正确大写、其余小写的段落。这比重新输入更快,避免了 Word「更改大小写」子菜单尴尬的中间状态。
数据库列命名
PostgreSQL 和 MySQL 通常对列名使用 snake_case,因为未引用的标识符默认折叠为小写。在工具中粘贴「First Name Last Name Email Address」,点击 snake_case,您会得到「first_name_last_name_email_address」,可以拆分成单独的列定义。
常见陷阱
标题大小写规则因风格指南而异
AP 风格将三个字母或更少的介词(of、in、to、for)小写,而 Chicago 风格不论长度都将所有介词小写。这个工具将每个词都大写,这是最简单的规则。如果您需要符合风格指南的输出,请检查结果并手动将连接词小写,或使用专门的 AP 或 Chicago 标题大小写工具。
camelCase 中的首字母缩略词看起来很奇怪
Java 命名约定说 HTTPRequest,但 Google 的 Java 风格指南说 HttpRequest。Microsoft 的 .NET 指南支持 Http。这个工具遵循较简单的规则,即在第一个词之后将首字母缩略词除第一个字母外的所有字母小写,生成 fetchHttpData 而非 fetchHTTPData。如果您的团队使用不同的规则,请手动调整。
Unicode 大小写折叠有边缘情况
德语 ß 大写为 SS(或自 2017 年以来很少使用的 U+1E9E),土耳其语 i 大写为带点 I(U+0130)而不是 ASCII I,希腊语末尾 sigma(U+03C2)需要位置逻辑。这个工具使用浏览器的 toUpperCase 和 toLowerCase,它们遵循 Unicode 默认设置,可能不匹配您语言的确切规则。始终验证依赖区域设置的输出。
开头或结尾的空格被保留
如果您粘贴「 hello world 」(带前导和尾随空格),camelCase 返回「 helloWorld 」,snake_case 返回「 hello_world 」。该工具默认不修剪,因为某些用例(格式化代码块、保留缩进)需要这些空格。如果您不想要它们,请在粘贴前或复制后修剪输入。
作为词边界的数字是模糊的
字符串「html5Canvas2D」可以拆分为 html、5、Canvas、2、D 或 html5、Canvas2D。这个工具将数字视为前一个词的一部分,所以 camelCase 输出保持 html5Canvas2D,snake_case 变为 html5_canvas2d。如果您需要数字分隔词,请在粘贴前手动插入空格。
不区分大小写的文件系统隐藏 bug
macOS APFS 和 Windows NTFS 默认不区分大小写,所以 MyComponent.js 和 mycomponent.js 在本地引用同一个文件。Linux 服务器和 ext4 区分大小写,所以部署可能因为令人困惑的模块缺失错误而失败。在跨操作系统工作时,始终将文件名小写或保持严格的大小写约定。
隐私与数据处理
您粘贴的每个字符都由您的浏览器中一小段 JavaScript 处理。没有网络请求,转换器本身不设置 cookies,没有与您输入的文本相关的分析,我们服务器上没有转换字符串的日志。复制结果按钮通过 Clipboard API 写入操作系统剪贴板,这是一个需要明确用户手势的操作,任何第三方都不可见。
页面加载后,转换器可以离线工作。您可以断开网络、在隐私窗口中打开页面或在沙盒 iframe 中运行,转换仍然有效。这使得该工具对敏感标识符、内部 API 名称和绝不应触及第三方服务的机密散文都很安全。
什么时候不使用大小写转换器
在语言之间翻译
大小写转换改变首字母大写,而不是词本身。如果您需要将「Hello World」翻译成法语或日语,请使用翻译工具或机器翻译 API。通过 camelCase 运行文本不会生成日语标识符,转换为大写也不会本地化。
生成风格化 Unicode 文本
如果您想要花体 Unicode 字母,如 𝓱𝓮𝓵𝓵𝓸 或 𝕙𝕖𝕝𝕝𝕠(用于社交媒体简介),请使用专门的 Unicode 花体文本生成器。大小写转换器使用普通的 ASCII 字母(A 到 Z),不替换数学、fraktur 或 doublestruck 变体。
字数或字符数统计
这个工具显示一个小型实时计数器,但不针对词频分析、阅读时间估计或推文字符预算进行优化。如果您需要详细的文本统计,请使用一个分解句子、段落和阅读难度的字数统计器。大小写转换器只用于大小写变化。
拼写或语法检查
转换大小写不会修复拼写错误的词。「Helo World」在大写中变为「HELO WORLD」,在小写中变为「helo world」;错字仍在。如果准确性很重要,请在大小写转换前后通过拼写检查器或语法工具运行文本。
更多问题
标题大小写和句子大小写有什么区别?
标题大小写将每个词的第一个字母大写(Hello World From The Editor)。句子大小写只将第一个词的第一个字母和所有专有名词大写(Hello world from the editor)。标题大小写用于标题、书名和章节标题;句子大小写是正文段落和元描述的默认设置。
为什么我的首字母缩略词在 camelCase 输出中看起来很奇怪?
不同的风格指南以不同方式处理首字母缩略词。Google 的 Java 风格说 HttpRequest,Microsoft 的 .NET 说 HttpRequest,但旧的 Sun 风格说 HTTPRequest。这个工具遵循更常见的现代约定,即除第一个字母外所有字母小写,生成 fetchHttpData。如果您的团队使用全大写首字母缩略词风格,请手动将结果大写。
这对非英语文本有效吗?
它适用于浏览器内置 toUpperCase 和 toLowerCase 支持的任何字母,涵盖大多数欧洲和西里尔文字。边缘情况包括德语 ß(大写为 SS)、土耳其语带点和不带点 I(依赖区域设置)和希腊语末尾 sigma(位置相关)。对于日语、中文和韩语,大小写转换是空操作,因为这些文字没有大小写区别。
为什么 kebab-case 是 URL 的默认设置?
搜索引擎将连字符视为词分隔符,但将下划线视为连接符,所以 /hello-world 被索引为两个词,而 /hello_world 被视为一个 token。Google 自 2008 年以来已经确认了这种行为。连字符还可以在 URL 栏中干净地显示并无歧义地复制,而空格变成 %20,下划线在小字体大小下可能被误认为是连字符。
我可以在链中多次在大小写之间转换吗?
可以。点击一种大小写后,输入区域仍然保留您的原始文本,所以点击第二种大小写会转换原始文本(而不是上一个输出)。要链式操作,请复制结果,粘贴到输入中,然后点击下一种大小写。这是有意为之,可以防止意外的双重转换,这可能产生奇怪的结果,如双下划线或丢失的大写。
转换器是开源的吗?
该工具是 Absolutool 的一部分,Absolutool 是一个闭源的静态站点。大小写转换算法本身在其他地方有充分文档记录(大多数语言都附带 String.prototype.toUpperCase、snake_case 正则表达式模式和 camelCase 转换)。如果您想自托管等效功能,像 change-case(JavaScript)或 stringcase(Python)这样的库涵盖所有 11 种大小写以及更多。