大小写转换与文本清理

全球通用工具

粘贴一个标题、一句话、一个变量名或整篇文档,页面会在你输入的同时给出十二种写法:小写、大写、标题式大小写、句首大写、camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE、Train-Case、交替大小写和反转大小写。每种写法都与其余写法并排展示,作用于同一段文字,因此无需先选中 `PascalCase` 再撤销,就能看到它会把句子变成什么样。

所有处理都在当前标签页中随输入实时完成;上方示例特意包含不换行空格、零宽空格和弯撇号,好让清理器有内容可报告。

四种字母大小写只改字母,保留标点、空格和换行。六种代码写法会按词重建文本再连接,因此词与词之间的标点不会跟过来。

Chicago 标题风格让介词无论多长都保持小写,另一种风格正是在这里产生分歧。虚词表印在表格下方。

零宽空格、字节顺序标记、软连字符或词连接符:这些不可见字符来自复制粘贴,会让两行看起来相同却不相等。零宽连接符永远不会被移除。

不换行空格、窄空格、连续两个空格、行内制表符、行尾空格。行首缩进永远不会被改动。

弯引号与键盘上的直引号是不同字符,这就是为什么从 Word 粘贴的文本里搜索带引号的短语会一无所获。这个开关决定转换方向,不主动选择就不会改动。

句子内部的换行,是邮件客户端、PDF 或文本编辑器在 72 个字符或页面宽度处自动折行时插入的。取消硬换行会把它们还原为空格,段落之间的空行保持不动。

留空时,文件名跟随所选大小写,例如 `title-case.txt` 和 `title-case-report.txt`。

边输入边更新。所有计算都在你的浏览器里完成,数据不会离开本机。

改变的字符数

114

标题式大小写:40 个词,输入 227 个字符,输出 224 个字符。文本本身就在下方框中。

词数
40 切词表列出的词块
输入字符数
227 码点
输出字符数
224
句子数
3
行数
4
清理项
4 发现 5 类内容

同一段文本的十二种写法

写法前六个词字符数
小写httpserver responses are cached for 24224
大写HTTPSERVER RESPONSES ARE CACHED FOR 24224
标题式大小写 - 上方就是这一种HTTPServer Responses Are Cached for 24224
句首大写HTTPServer responses are cached for 24224
camelCasehttpServerResponsesAreCachedFor24HoursTheStateOfTheArtParserReadsHtml5…179
PascalCaseHttpServerResponsesAreCachedFor24HoursTheStateOfTheArtParserReadsHtml5…179
snake_casehttp_server_responses_are_cached_for_24_hours_the_state_of_the_art_par…218
kebab-casehttp-server-responses-are-cached-for-24-hours-the-state-of-the-art-par…218
CONSTANT_CASEHTTP_SERVER_RESPONSES_ARE_CACHED_FOR_24_HOURS_THE_STATE_OF_THE_ART_PAR…218
Train-CaseHttp-Server-Responses-Are-Cached-For-24-Hours-The-State-Of-The-Art-Par…218
交替大小写hTtPsErVeR rEsPoNsEs ArE cAcHeD fOr 24224
反转大小写httpsERVER RESPONSES ARE CACHED FOR 24224
只展示前六个词,因为整篇文档的十二种写法会是一堵文字墙;字符数统计的是全文,因此这一列才能看出某种写法省了多少或多了多少。
表单上的清理设置对每一行都相同:这张表只讨论大小写,不讨论别的。
标题式大小写中保持小写的虚词是:a, an, the, and, but, for, nor, or, so, yet, although, as, because, if, since, than, that, though, unless, until, when, whenever, where, whereas, whether, while, whilst, about, above, across, after, against, along, alongside, amid, amidst, among, amongst, around, at, before, behind, below, beneath, beside, besides, between, beyond, by, despite, down, during, except, from, in, inside, into, like, near, of, off, on, onto, out, outside, over, past, per, regarding, round, through, throughout, till, to, toward, towards, under, underneath, unlike, up, upon, via, versus, vs, with, within, without。

字符数下降有两个不同原因:代码类写法会丢掉标点和词间空格,而大写可能因文本所用字母不同而变宽或变窄。

转换后的文本

HTTPServer Responses Are Cached for 24 Hours. The State-of-the-Art Parser Reads HTML5 and Never Minds Don’t-Style Apostrophes.

A Line that Was Hard-Wrapped by an
Email Client Belongs in One Paragraph with a “Quoted” Phrase.

可以复制,也可以下载。标点、空格和换行都在原位,因为字母类大小写只改变字母,别的都不动。

这段文本是如何切成词的

词原文形式为什么从这里开始一个新词
HTTPHTTP文本的第一个词
ServerServer连续大写后接小写词(`HTMLResponse` 在 `Response` 前切开)
responsesresponses前面是空格、换行或标点
areare前面是空格、换行或标点
cachedcached前面是空格、换行或标点
forfor前面是空格、换行或标点
2424前面是空格、换行或标点
hourshours前面是空格、换行或标点
TheThe前面是空格、换行或标点
statestate前面是空格、换行或标点
ofof前面是空格、换行或标点
thethe前面是空格、换行或标点
artart前面是空格、换行或标点
parserparser前面是空格、换行或标点
readsreads前面是空格、换行或标点
HTML5HTML5前面是空格、换行或标点
andand前面是空格、换行或标点
nevernever前面是空格、换行或标点
mindsminds前面是空格、换行或标点
dontdon’t前面是空格、换行或标点
stylestyle前面是空格、换行或标点
apostrophesapostrophes前面是空格、换行或标点
AA前面是空格、换行或标点
lineline前面是空格、换行或标点
thatthat前面是空格、换行或标点
waswas前面是空格、换行或标点
hardhard前面是空格、换行或标点
wrappedwrapped前面是空格、换行或标点
byby前面是空格、换行或标点
anan前面是空格、换行或标点
前 30 个词,共 40 个:表格为了可读性截断,报告包含全部内容。
一个词是一段字母和数字,允许中间出现撇号。其他所有内容 —— 空格、换行、下划线、连字符、点、斜杠、逗号、括号、emoji —— 都会把词与词分开,所以 `state-of-the-art` 与 `state_of_the_art` 生成相同标识符。

当代码类写法让你意外时,读这张表。`parseHTMLResponse` 会变成 `parse_html_response`,因为小写字母后的大写,以及小写词前的连续大写,都是词边界;而作为一个词的 `HTTPSERVER` 根本无法切分,因为没有任何可见的边界。

清理器发现了什么

文本里有什么数量本页做了什么
不可见字符1已移除
异常空格3已替换为单个普通空格
弯引号、破折号与省略号3保持原样
句子内部的换行1保持原样
连续空行1保持原样
查找过但未发现:文本最开头或最末尾的空白、以空格或制表符开头的行。
计数针对粘贴内容,而不是修改结果:关掉某一项修复只会改变第三列,别的都不变。

有人打开清理器,一半原因是想知道文本里有什么,而不是想改它;所以即使某项修复被关闭,它仍然会报告数量。

这些字符从哪里来

  • 不可见字符:零宽空格、字节顺序标记、软连字符或词连接符。它们来自复制粘贴,也是两行看起来相同却不相等的原因。移除一个字符会把两侧字母接在一起,这通常正是目的:它不可见,却切开了看起来完整的词。零宽连接符有意不在列表中 —— 它维持 emoji 组合字的整体性,印度系文字也需要它。
  • 异常空格:1 个不是空格键打出的空格(不换行空格、窄空格、em 空格),1 处是连续两个或更多空格,0 个是行首以外的制表符,1 处是行尾空格。行首空白永远不会被改动:那是缩进,也是代码粘贴能在这页存活下来的原因。
  • 弯引号、破折号与省略号:文字处理器会把弯引号、弯撇号、em 破折号和三个点写成一个字符。在代码里,它们都与键盘上的字符不同,所以在包含弯引号的页面中搜索直引号词语会一无所获。这段文本包含 3 个弯引号、0 个排版破折号和 0 个省略号。
  • 句子内部的换行:句子中间的换行,是邮件客户端、PDF 或文本编辑器在 72 个字符或页面宽度处折行时留下的。取消硬换行会把它们还原为空格,而分隔真实段落的空行保持不动。
  • 连续空行:本该一个空行的地方出现了两个或更多空行,这通常是从带标题和图片的文档里粘贴时带进来的。

这些数字没有说明的事

  • 这段文本包含 40 个词,每个词从哪里开始都是一个决定:小写字母后的大写(`parserReads`)、小写词前的连续大写(`HTMLResponse`)、上方开关允许时字母旁的数字,以及所有不是字母或数字的字符。结果下方的表格会逐词列出并说明原因,因此代码类写法不必靠信任。
  • 标题式大小写就是一张虚词表加三条例外,全部印在上方表格下面:虚词位于标题开头、标题结尾,或位于标题内部的冒号及其他句末标点之后时,首字母大写。“A Tale of Two Cities” 遵循这条规则,“A Tale Of Two Cities” 则是另一个设置。
  • 本身带有固定形态的词会原样保留,`iPhone`、`macOS`、`API`、`USA` 和 `HTML5` 因此能存活。全大写的词在较短时按缩写处理,较长时按强调性大写处理;如果整段文本都是大写,每个词都会重新判断大小写 —— 这是全大写标题能够被转换的唯一方式。
  • 页面不识别姓名:撇号不会开启新词,所以 `o’brien` 会变成 `O’brien`。连字符会开启新词,所以 `state-of-the-art` 的每一部分都会大写 —— “State-of-the-Art”,这正是 Chicago 风格对标题中复合词的处理。
  • 清理器先报告再修复,并且对两类始终不动的内容保持保守:行首空白是缩进,零宽连接符维持 emoji 组合字并且某些文字系统需要它。这段文本的设置是:不可见字符已移除,异常空格已替换为普通空格,引号保持原样,换行保持原样。
  • 弯引号是一个方向,而不是一次修复:转为直引号是粘贴进代码所需,转为弯引号则是文本编辑器所谓的智能引号。唯一需要上下文的是撇号,页面会看相邻字符:位于两个字母之间的引号结束一个词,所以直引号 `don't` 会变成 `don’t`,而不是 `don‘t`。
  • 有意不包含:不做语言检测,因此大小写遵循 Unicode 默认规则并偏英文形态;不做转写或去重音,所以 `café` 即使在 kebab-case 中也保持 `café`,因为 URL slug 是另一项工作;没有缩写词典,小写输入的词不会被猜成大写;不做词干还原,因此不会判断 `count` 和 `counts` 是同一个词。
转换在当前标签页中完成,执行它的是生成页面里已有文本的同一个函数,因此没有向任何地方发送内容 —— 页面背后也没有可以接收粘贴内容的端点,即使有东西尝试发送也不行。

同一个页面还会处理复制粘贴带进来的内容:看起来和普通空格毫无差别的不换行空格、让两行看似相同却不相等的零宽空格、软连字符、重复空格、行尾空格、弯引号,以及邮件客户端在 72 个字符处硬换行时插入的换行。文本不会上传,清理器会先报告发现了什么,再决定是否修改,也包括你明确要求保留的内容。

关于这个工具

大小写看起来是小事,直到一个标题要变成变量名,而缩写还必须在这一过程中存活下来。本页把同一段文本写成十二种形式——标题式大小写、句首大写、camelCase、snake_case、CONSTANT_CASE 等——并排展示,让你在选定之前就能看到某种写法作用于自己文字的效果。

页面不上传任何内容,而清理环节恰恰最能体现隐私价值:一次粘贴常常携带不换行空格、零宽空格或软连字符,它们肉眼看起来完全相同,却会让比较失败;工具会在改动之前逐项报告。十二种转换全部在浏览器中完成,草稿或变量名不会到达服务器。

大小写转换器只负责字母的书写形式,不是语法检查器,也不是风格指南:它改变词的写法,保留含义、顺序和标点。当两种写法都可能正确时,页面会把它们都展示出来让你选择,而不是替你猜测。

它是怎么工作的

词边界在哪里,代码类写法全靠它

`snake_case` 这类写法无法只靠改字母得到:它必须先知道一个词在哪里结束、下一个词从哪里开始,而答案并不在空格里。`parseHTMLResponse` 是三个词,`HTTPServer` 是两个词,`don’t` 是一个词,`state-of-the-art` 是四个词;只按空格切分的页面会把它们各自变成一个很长的 token,其他转换器令人意外的地方大多来自这里。

本页按四类边界切分:任何不是字母或数字的字符,包括空格、换行、下划线、连字符、点、斜杠、逗号、括号和 emoji;小写字母之后出现的大写字母;一串大写字母后接小写词时,最后一个大写字母之前的位置;以及字母与数字相邻且开关允许时。四类边界都会在结果下方逐词列出,并说明每个词的起点原因,方便你核对切分,而不是只能相信结果。

四种字母大小写与六种代码写法

四种字母大小写只改字母,其余内容原样保留:`lowercase` 和 `UPPERCASE` 改变每个字母,`Title Case` 让每个词首字母大写,`Sentence case` 让每句首字母大写。标点、空格、引号和换行都不会被改动,因此它们适合直接用在正文上。

六种代码写法则会先按词重建文本,再用空串、下划线或连字符连接。这正是标识符需要的形态,也解释了为什么词与词之间的标点不能一起带过去:`Hello, world!` 在 snake_case 下是 `hello_world`,撇号会被丢弃,而不会变成标识符的一部分。交替大小写和反转大小写逐字母处理,一个用于制造视觉效果,一个用于修复大写锁定造成的误输入。

标题式大小写是一种风格,不是一次固定运算

一句话并不存在唯一的“标题式大小写”,所以页面把风格做成了开关。默认遵循 Chicago 标题风格:冠词、连词和介词无论多长都保持小写,例如 `A Tale of Two Cities`、`The Road between Two Cities`;但有三类例外,虚词位于标题开头、标题结尾,或位于标题内部的冒号及其他句末标点之后时,首字母要大写。另一个选项会把每个词都大写,接近 AP 风格对四个字母及以上介词的处理。完整的虚词表会直接印在页面上。

本身带有固定形态的词会原样保留,`iPhone`、`macOS`、`API`、`USA` 和 `HTML5` 因此能穿过标题式转换而不变形。全大写的短词按缩写处理,过长则按强调性大写处理;如果整段文本都是大写,页面会逐词重新判断大小写,否则 `THE QUICK BROWN FOX` 里的每个词都像缩写,根本无法转换。标题式大小写在自然语言和专有名词上本来就有歧义,本页不做语言识别,也不会假装替你消除这种歧义。

句首大写,以及它没有沿用的一条规则

句首大写会先把所有字母转为小写,再把每句的首字母大写。它判断句末时使用与相邻字数统计器相同的缩写表,因此 `Mr. Smith`、`Fig. 3`、`e.g.` 以及两个数字之间的点,例如 `3.14`,都不会开启新句子。它没有沿用的,是统计器另一条保守规则:计数时,句点后接小写词会被视为句子仍在继续,例如 `see index.html for`;这条规则在需要保住数字时有用,在这里却没有意义,因为文本之所以是小写,正是因为正在被转换。

以缩写形式出现的词会保留大写,`NASA` 和 `iPhone` 不会被拆坏;英文代词 `I` 在四种缩写形式中都会大写。大小写选项下方的开关决定每一行开头是否也算句子开头:项目符号列表需要这样做,而被邮件客户端硬换行的段落则不能被逐行加上大写。

粘贴会带来什么,清理器又拒绝动什么

从 Word、PDF 或网页粘贴出来的文本,常带着肉眼看不见的字符:不换行空格看起来与空格无异,却会让搜索和比较全部失败;行尾的零宽空格会让两行看似相同却不相等;此外还有软连字符、字节顺序标记和词连接符。再往下是重复空格、行尾空格、与键盘字符不同的弯引号,以及邮件客户端在 72 个字符处插入的换行。每一种都有独立开关,结果下方的表格会说明各发现了多少,以及当前设置做了什么。

有两类内容是有意不动的。行首空白是缩进,列表、大纲和代码块靠它表达结构,清理器若把它压掉,就是在重写文档而不是清理文档。零宽连接符也不是噪声,它维持 emoji 组合字的整体性,某些文字系统同样需要它,因此始终保留。清理器同时也是测量工具:它打印的是粘贴内容中原本有什么,而不是改掉了什么;关掉某个修复项,你看到的是自己带来了什么,而不是被隐藏了什么。

示例

示例使用页面自带的默认输入,只改设置;下面的结果与你在页面上看到的完全一致。

全大写标题转换为标题式大小写

要转换的文本: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG · 转换目标: 标题式大小写,每个词首字母大写,虚词保持小写

改变的字符数

28

标题式大小写:9 个词,输入 43 个字符,输出 43 个字符。文本本身就在下方框中。

词数: 9 · 输入字符数: 43 · 输出字符数: 43 · 句子数: 1

每个全大写单词都会重新判断大小写,介词保持小写;整段文本全为大写时,缩写规则会被关闭,这也是此类转换能够成立的前提。

把一句话转成 Python 标识符

要转换的文本: Parse the HTMLResponse from HTTPServer · 转换目标: snake_case,下划线连接,全部小写

改变的字符数

33

snake_case:7 个词,输入 38 个字符,输出 40 个字符。文本本身就在下方框中。

词数: 7 · 输入字符数: 38 · 输出字符数: 40 · 句子数: 1

切分决定一切:`HTMLResponse` 得到 `html_response`,因为连续大写后接小写词构成边界;`HTTPServer` 得到 `http_server`。

清理从 Word 粘贴的内容并转为句首大写

要转换的文本: a “smart” quote from Word… · 转换目标: 句首大写,每句首字母大写,其余小写 · 引号与破折号: 转为键盘直引号,适合代码

改变的字符数

27

句首大写:5 个词,输入 28 个字符,输出 28 个字符。文本本身就在下方框中。

词数: 5 · 输入字符数: 28 · 输出字符数: 28 · 句子数: 1

两组重复空格被合并,两个弯引号被转为直引号,一个省略号恢复为三个点,然后首字母大写;每项处理的数量都在结果表格中。

一封被按 72 字符硬换行的邮件

要转换的文本: one two three four five six · 转换目标: 小写,所有字母转小写,保留标点 · 换行: 取消硬换行,保留段落

改变的字符数

1

小写:6 个词,输入 28 个字符,输出 28 个字符。文本本身就在下方框中。

词数: 6 · 输入字符数: 28 · 输出字符数: 28 · 句子数: 1

句子内部的换行变成空格,空行保留,这正是把硬换行邮件还原为段落的效果。

常见问题

标题应该用哪种大小写?

取决于你要遵循的风格指南,页面因此不替你选择。Chicago 标题风格让冠词、连词、介词无论多长都保持小写,`the road between two cities` 会变成 `The Road between Two Cities`;AP 风格会把四个字母及以上的介词大写,同一个标题变成 `The Road Between Two Cities`。两种都在表单里,虚词表印在表格下方,页面唯一不做的事,是把这种选择伪装成算术。

为什么 camelCase 结果和预期不同?

几乎总是切词位置造成的。结果下方的表格会列出每个词及其起点原因,最容易让人意外的是连续缩写和数字。`parseHTMLResponse` 会变成 `parseHtmlResponse` 而不是 `parseHTMLResponse`,因为强制 camelCase 的 linter 通常要求把连续缩写重新转成普通大小写;`HTML5` 默认保持一个词,除非移动数字开关,此时会变成 `html_5`。

粘贴的内容会被发送到某处吗?

不会。整个工具按同一条固定规则处理字符串:它在你输入时于浏览器中运行,页面里按同一条规则跑一遍,提前生成页面中已有的转换结果。没有上传按钮,因为不存在上传;页面背后也没有可以接收文档的端点,即使有东西尝试发送也不行。处于保密期的草稿可以在这里粘贴。

清理器如何处理看不见的字符?

它会计数并点名。不换行空格、零宽空格、软连字符、字节顺序标记、词连接符、重复空格、行内制表符、行尾空格、弯引号、排版破折号、省略号以及硬换行,都会被逐一查找;表格说明原本有多少,以及当前设置做了什么。没有开关就不会删除任何内容,计数针对粘贴内容而不是修改结果,因此这个页面既能修文档,也能检查文档。

为什么 Mr. 后面的名字没有大写?

因为让 `Mr. Smith` 留在同一句里的规则,和判断句子起点的规则是同一条:已知缩写后的句点不结束句子。于是 `mr. smith arrived.` 会变成 `Mr. smith arrived.`,句子对了,名字却不对。所有这类工具都必须在不依赖词典的情况下划线,本页把这条线公开,并打印所用的缩写表。

能生成 URL slug 吗?

它完成大小写这一半:kebab-case 会把 `Ten Ways to Clean Up Text` 变成 `ten-ways-to-clean-up-text`,清理器会先去掉异常空格和不可见字符。它有意不做的,是 slug 化的另一半——转写重音字符(`café` 仍是 `café`)、删除停用词、在词边界截断——因为这些是关于 URL 的编辑决策,而不是大小写转换;在这里悄悄执行,会让工具变成另一种东西。

emoji 和其他文字会怎样?

emoji 是分隔符,永远不会成为词的一部分,因此代码类写法会丢弃它,字母类写法则原样保留。拉丁字母以外的字母仍然是字母:`café` 和 `naïve` 各算一个词;CJK 文本没有空格可供切分;大小写遵循 Unicode 默认规则,`İ` 和 `ß` 的表现与 Unicode 规定一致。转换土耳其语或德语文档前值得了解这一点,因为本页不检测语言,也不假装能够检测。

反转大小写能修复大写锁定误输入吗?

能,但前提是整段文本都在大写锁定开启时输入:每个字母都会被反转,大写变小写、小写变大写,再应用一次即可还原。如果只有一部分文字受影响,它就是一件钝器——这里没有撤销历史,也无法判断哪些字母本来应该是大写——所以字母类写法和报告通常是更好的答案。

资料来源与统计口径

  • 十二种写法遵循通行惯例:snake_case、kebab-case、CONSTANT_CASE、camelCase、PascalCase、标题式与句首大写。
  • 页面不猜语言,也不做翻译、去重音或缩写还原,所以最终仍是你的原话。
  • 清理只去掉多余空格与不可见字符;全部在浏览器里完成,不上传。

最近复核于 2026-09-17.

本页在您的浏览器本地运行,请保留原文件备份;不涉及财务建议。 阅读完整免责声明。