大小写转换
全大写、全小写、首字母、每词首字母、句首大写互转
五种大小写转换的区别:句首大写和每词大写不一样
五种模式各自做了什么
| 模式 | 处理方式 | hello WORLD. this is a Test. |
|---|---|---|
| 全大写 | 每个字母转大写 | HELLO WORLD. THIS IS A TEST. |
| 全小写 | 每个字母转小写 | hello world. this is a test. |
| 首字母大写 | 只处理整段的第一个字符,其余保持不变 | Hello WORLD. this is a Test. |
| 每词首字母大写 | 每个词的第一个字母转大写(词边界判定) | Hello WORLD. This Is A Test. |
| 句首大写 | 句子第一个字母与 I 之类需转大写 | Hello world. This is a test. |
第三行和第五行的差别是最容易混淆的:"首字母大写"只动一个字符(整段开头那个),而"句首大写"要在标点处切分句子,把每句开头的字母都转大写,同时把句中不必要的大写降下来。
什么时候用哪个
- 首字母大写:需要把一句话变成标签、标题前缀、按钮文案时。用户输入了全小写的内容,想在展示时只改第一个字符——这种场景下"每词首字母大写"会破坏原有的缩写(
HTTP会变成Http之类的问题不在它,而在词边界判定上)。 - 每词首字母大写:标题式写法、人名与地名整理、界面里的项目名。要注意它会把冠词和介词一起大写(
a、the、of),不符合英文标题规范里"小词小写"的做法。生成的标题建议人工再调一次。 - 句首大写:修正全大写输入或全小写输入的可读性。适合从数据库或旧系统导出的文本。
- 全大写:常量名、警告文案、以及需要"视觉强调"的短标签。注意全大写的长文本会显著降低可读性(失去词形的轮廓差异),英文里连续大写的整段文字通常被理解为"喊叫"。
- 全小写:URL slug、邮箱、以及需要规范化比较的标识符。
词边界是怎么判定的
"每词首字母大写"依赖词边界的判定规则。常见的实现方式是在非字母数字字符(空格、连字符、下划线、标点)之后开始一个新词。这会带来几个实际结果:
- 连字符后的单词会被大写:
state-of-the-art→State-Of-The-Art。 - 撇号后的字母可能被大写:
don't可能变成Don'T,取决于实现是否把撇号视作边界。 - 数字与字母的边界:
3d、v2这类词的处理没有标准答案。
所以自动转换的结果总是需要人工过一遍。它适合批量处理大量文本的初稿,不适合当作最终输出。
不能用大小写处理的场景
- 语言相关的规则。土耳其语的
i大写是İ(带点)而不是I;德语名词首字母大写是语法要求。通用的转换函数基于 Unicode 默认规则,不处理这类语言特例。 - 不该改的内容。转换是全字符串处理,会把代码片段、文件路径、URL 一起改掉。含技术标识符的文本不应整体做大小写转换——这也正是下面这个工具(命名风格互转)存在的理由。
- 需要保留原样比较的场景。如果目的是"忽略大小写地判断两段文本是否相同",正确做法是在比较时统一大小写,而不是修改并保存原文本——后者会造成数据不可逆的丢失。
工具在浏览器本地完成转换,文本不经过服务器。
常见问题
"首字母"和"句首"有什么区别?
首字母只把整段文本的第一个字母大写;句首则在每个句子(以 . ! ? 或中文标点结尾)后的首字符大写。
"每词首字母"会处理中文吗?
不会。它只对英文单词首字母大写,中文、数字不受影响。