英文标题大小写转换

一行一个标题,五秒切换 Title Case、Sentence case、UPPERCASE、lowercase、tOGGLE 五种写法;Title Case 会按小词表把 a、an、the、of、in、on、and、or、to 留在小写,并强制首词与末词大写。

输出规则
按行处理,行数不变;每行的多个空格会压成 1 个,行首行尾空白会被去掉。
行数3
输入码点数114
输出码点数114
码点变化0
小词词性所属表Title Case 里的写法
a冠词核心(默认生效)小写(首词与末词除外)
an冠词核心(默认生效)小写(首词与末词除外)
the冠词核心(默认生效)小写(首词与末词除外)
of介词核心(默认生效)小写(首词与末词除外)
in介词核心(默认生效)小写(首词与末词除外)
on介词核心(默认生效)小写(首词与末词除外)
and介词核心(默认生效)小写(首词与末词除外)
or介词核心(默认生效)小写(首词与末词除外)
to介词核心(默认生效)小写(首词与末词除外)
about介词扩展(需勾选)默认大写,勾选扩展表后小写
above介词扩展(需勾选)默认大写,勾选扩展表后小写
across介词扩展(需勾选)默认大写,勾选扩展表后小写

提示:文本框里按 Ctrl + Enter(macOS 用 Cmd + Enter)立即重算,单按 Enter 是换行;改模式或勾选项也会立刻重算。小词表共 59 行,默认显示 12 行,「加载更多」展开全部。

使用方法

  1. 把英文标题粘进上面的文本框,一行一个标题;上限 20 万字符。页面打开时框里已经预置了 3 行示例:the quick brown fox jumps over the lazy dog、an API for HTML5 and CSS、what is the state-of-the-art of on-device AI?。
  2. 选择模式。Title Case 是标题式,只有小词保持小写、其余词首字母大写;Sentence case 只把句首和句末标点后的首字母大写;UPPERCASE 与 lowercase 是整行大写 / 整行小写;tOGGLE case 按字符逐位反转大小写。
  3. 按需勾选两项:保留全大写缩写与内部大写词(默认勾选,API、NASA、HTML5、iOS 这类词原样保留)、扩展小词表(默认不勾,勾上后 for、over、with 等 50 个介词与连词也进小词表)。
  4. 点「转换大小写」,或在文本框里按 Ctrl + Enter 立即重算。结果区逐行输出,行数保持不变。
  5. 结果上方四张卡片显示行数、输入码点数、输出码点数与码点变化——绝大多数情况下变化是 0,只有遇到 ß 这类字符才会变,原因见「结果边界」一节。下方 59 行的小词表可以「加载更多」看全、按 TSV「复制对照表」或「导出 CSV」。

这个英文标题大小写转换能解决什么问题

一是把整批标题按同一套规则统一写法。文章标题、栏目名、PPT 页标题、商品名、YouTube 视频名,只要一行一个粘进来,一次转换全部对齐;一行一个的设计也方便你直接粘回表格或 CMS。

二是说清「Title Case 到底怎么算」。很多人以为标题式就是「每个词首字母大写」,于是写出 The Quick Brown Fox Jumps Over The Lazy Dog——把小词 the、of、and 也大写了。这个英文标题大小写转换把规则摊开:小词只在小写位置上保持小写,出现在首词或末词时照样大写。

三是在风格指南之间做切换。同一批标题,按只含 9 个词的精简小词表和按含 59 个词的表转换,结果会差在 for、over、through、vs 这些词上。勾选框让你一眼看到两种口径的差别,而不是凭感觉争论。

四是保护已有的专有名词与缩写。直接整行转小写会把 NASA、API、iOS 变成 nasa、api、ios,再转回来就找不回原来的大小写了;勾上「保留全大写缩写与内部大写词」就能避免这种不可逆的损失。

本页不做这些事:不识别 iPhone、eBay 这类品牌词的正确写法(它只保留原文里已经写对的大小写)、不做英文语法分析、不判断某个词是不是专有名词(那需要词典与上下文)、也不把中文标题转成英文。

五种模式的规则与 59 个大小词

这个英文标题大小写转换的底层只有两个 JavaScript 字符串方法:String.prototype.toUpperCase() 与 toLowerCase()。它们不是简单的 ASCII 加减 32,而是按 Unicode 标准的大小写映射表执行——包含 SpecialCasing.txt 里那些「一对一之外」的映射,所以长度不一定保持不变(下一节给出实测数字)。Title Case 与 Sentence case 则是在这两个方法之上再套一层规则。

Title Case 的处理顺序是:按行拆分 → 每行按空白拆词 → 逐词判定 → 用单个空格拼回。逐词判定分三步:先判断这个词是不是缩写(原词在第 1 位之后还含大写字母,或者整个词是大写加数字,例如 API、HTML5、NASA),是就原样保留;再判断它是不是小词且既不是首词也不是末词,是就转小写;否则把词首字母转大写、其余转小写。带连字符的词按 - 再分段处理一次,所以 state-of-the-art 会得到 State-of-the-Art——中间的 of、the 是小词,保持小写,首段和末段强制大写。

小词表为什么是 59 个。默认生效的是核心表,只有 9 个词:冠词 a、an、the,介词 of、in、on、to,连词 and、or。这是很多中文团队口口相传的那一张「小词表」。勾选「扩展小词表」后会再并入 50 个词——41 个介词(about、above、after、between、for、from、over、through、via、vs、with 等)与 9 个连词(but、so、than、yet、as、nor、if、when、while),合计 59 个。两张表没有交集,所以不会出现重复判定。

这套「小词小写」的思路来自英文排版惯例,最常被引用的是《The Chicago Manual of Style》的 headline-style capitalization 条款,它把冠词、并列连词、所有介词和从属连词都归入小写档;APA、AP 两家风格指南的具体词表和例外各不相同。本页把词表做成可见、可切换、可复制的形式,而不是藏在代码里,就是为了让你按自己团队的口径去核,而不是盲信某一个默认。

Sentence case 的规则是:整行转小写,然后把行首、以及每个 . ! ? 之后的首字母转大写;勾选了缩写保护时,先行保留缩写词再大写句首。注意它不会把专有名词还原成大写的 london、english——那需要词典,本页不做。

完整示例(数值均为实测)

示例是页面里那 3 行标题,共 22 个词、114 个字符。下面把同一段文字在五种模式下的输出并排列出,可以直接和结果区对照:

模式输出(三行)
Title CaseThe Quick Brown Fox Jumps Over the Lazy Dog
An API For HTML5 and CSS
What Is the State-of-the-Art of On-Device AI?
Sentence caseThe quick brown fox jumps over the lazy dog
An API for HTML5 and CSS
What is the state-of-the-art of on-device AI?
UPPERCASETHE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
AN API FOR HTML5 AND CSS
WHAT IS THE STATE-OF-THE-ART OF ON-DEVICE AI?
lowercasethe quick brown fox jumps over the lazy dog
an api for html5 and css
what is the state-of-the-art of on-device ai?
tOGGLE caseTHE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
AN api FOR html5 AND css
WHAT IS THE STATE-OF-THE-ART OF ON-DEVICE ai?

拆开看 Title Case 这一行:三行里一共 4 个小词被保持小写(第 1 行的 the、第 2 行的 and、第 3 行的 the 与 of),4 个词因为是缩写被原样保留(API、HTML5、CSS、AI?)。an 是小词但位于首词位置,所以照样大写为 An;第 2 行的 For 在默认的核心表下不是小词(for 只在扩展表里),这正是下面那张对照表要说的差异。

小词表与核心 / 扩展口径对照表

同一行标题,默认的核心小词表与勾选后的扩展小词表会给出不同结果,差异只落在小词上:

输入标题核心 9 词(默认)扩展 59 词
the quick brown fox jumps over the lazy dogThe Quick Brown Fox Jumps Over the Lazy DogThe Quick Brown Fox Jumps over the Lazy Dog
an API for HTML5 and CSSAn API For HTML5 and CSSAn API for HTML5 and CSS
over the river and through the woodOver the River and Through the WoodOver the River and through the Wood
html5 roxxors vs css3Html5 Roxxors Vs Css3Html5 Roxxors vs Css3
what is the state-of-the-art of on-device AI?What Is the State-of-the-Art of On-Device AI?What Is the State-of-the-Art of On-Device AI?

最后一行的两种口径结果完全一样,因为那一行里的 the、of 已经在核心表里;is、on、in 之外没有别的介词。这也说明一件事:词表差 50 个,实际能碰上的差异往往只有一两个词,不必为了对齐风格指南去手工改整批标题。

输入范围与限制:

结果边界与大小写映射的坑

本页不做数值四舍五入,但「字符数」会因为 Unicode 大小写映射而变化,这是最容易被忽略的一条:

字符码位toUpperCase()toLowerCase()tOGGLE 后
ßU+00DFSS(1→2 字符)ß(不变)SS(1→2 字符)
İU+0130İ(不变)i̇(1→2 字符)i̇(1→2 字符)
ıU+0131I(不变长)ı(不变)I(不变长)
DžU+01C5DŽ(不变长)dž(不变长)dž(不变长)
fiU+FB01FI(1→2 字符)fi(不变)FI(1→2 字符)

常见问题

Title Case 里到底哪些词不大写?为什么默认只有 9 个?

默认的核心表是 9 个词:冠词 a、an、the,介词 of、in、on、to,连词 and、or。这是中文团队里流传最广的一张精简小词表,覆盖了 90% 以上的常见标题。要贴近《Chicago Manual of Style》那种「所有介词、连词都小写」的口径,勾上「扩展小词表」,词表会扩到 59 个,多出 for、over、with、through 这类词。

为什么 for、over 在标题里被大写成了 For、Over?

因为它们不在默认的 9 词核心表里。示例第 2 行的 An API For HTML5 and CSS 就是默认口径的结果;勾上扩展小词表之后会变成 An API for HTML5 and CSS。两种写法都有团队在用,本页让你选,而不是替你决定。

为什么第一个词和最后一个词一定要大写?

这是英文标题排版惯例:标题的开头与结尾被视为重音位置,即使它是冠词或介词也大写。示例里 an 是小词但位于行首,所以输出 An;out of the 的末词 the 也会变成 The。这两条例外不做成开关,是为了让输出结果稳定可预期。

为什么输入的 NASA、HTML5、iOS 没有被改成 Nasa、Html5、Ios?

「保留全大写缩写与内部大写词」勾选时,工具会先看原词:如果第 1 位之后还有大写字母(HTML5、API、iOS),或者整词是大写字母加数字的组合(NASA),就判定为缩写并整词原样保留。取消勾选后,这些词会被当成普通词处理,NASA 会变成 Nasa。

为什么 o'brien and the api 里的 api 变成了 Api?

因为输入里写的是小写 api,工具没有任何依据把它判定成缩写,只能按普通词首字母大写。想保留缩写写法,请先把输入改成 API;同理 iphone 会变成 Iphone,而 iPhone 会被原样保留。

整行输入的本来就是大写,为什么 Title Case 没有帮我变小写?

因为整行大写时每个词都满足「缩写」判定,工具就把它们全部原样保留了。正确的用法是先切到 lowercase 模式把整行转成小写,再切回 Title Case 重新排版;或者取消勾选「保留全大写缩写与内部大写词」,让所有词统一按小词规则处理。

tOGGLE 模式下字符数为什么会变多?

因为个别字符的大小写映射不是一对一:德文 ß 转大写是 SS,连字 fi 转大写是 FI,两个都从 1 个字符变成 2 个。结果区上方的「码点变化」卡片会把净变化量算出来,遇到 0 以外的值就说明这段文字里有这类字符。

多行文本是怎么处理的?会不会把换行吃掉?

不会。工具先把输入按换行拆成若干行,每行独立转换,再用换行拼回去,所以输入几行输出就是几行,空行也照原样保留。被改变的是行内的东西:多个连续空格会压成一个,行首行尾的空白会被去掉。

相关工具