Skip to content

大小写转换器 — UPPERCASE、lowercase、camelCase 一次搞定

在浏览器里把文本一键转成 UPPERCASE、lowercase、Title Case、Sentence case、camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE 等共 15 种命名格式。免费、纯本地、无需注册。

无追踪 浏览器中运行 免费
所有大小写转换都在你的浏览器本地完成。不会向任何服务器发送数据。

文本大小写

lowercase

所有字母小写。保留空白。

hello world example

UPPERCASE

所有字母大写。保留空白。

HELLO WORLD EXAMPLE

Title Case

每个单词首字母大写。

Hello World Example

Sentence case

每个句子首字母大写。

Hello world example

iNVERSE cASE

把每个字母的大小写互换。

hELLO wORLD eXAMPLE

aLtErNaTiNg cAsE

逐字母在小写与大写之间交替。

hElLo WoRlD eXaMpLe

RaNdOm CaSe

对每个字母独立掷硬币决定大小写。

HeLLo WorLd eXamPLe

编程命名格式

camelCase

首词小写,其余首字母大写,无分隔符。

helloWorldExample

PascalCase

每个单词首字母大写,无分隔符。

HelloWorldExample

snake_case

全部小写,用下划线连接。

hello_world_example

kebab-case

全部小写,用连字符连接。

hello-world-example

CONSTANT_CASE

全部大写,用下划线连接。

HELLO_WORLD_EXAMPLE

dot.case

全部小写,用句点连接。

hello.world.example

path/case

全部小写,用正斜杠连接。

hello/world/example

Header-Case

每个单词首字母大写,用连字符连接。

Hello-World-Example
已审核与 lodash / change-case 的一致性、Unicode 大小写映射正确性、缩略词来回往返稳定性,以及 7 种文本 + 8 种编程命名格式的功能矩阵。 — Go Tools 工程团队 · 2026年5月26日

什么是大小写转换器?

大小写转换器是一个小型实用工具:它接收一段文本,并把它用另一种字母大小写约定重新渲染。最简单的形式是 UPPERCASE 与 lowercase——把每个字母翻到同一种大小写。更复杂的形式则会套用语言规则(Title Case 把每个单词首字母大写,Sentence case 把每个句子首字母大写)或编程命名规则(camelCase 把第二个及之后的每个单词首字母大写以连接它们;snake_case 全部小写并用下划线连接)。在线大小写转换器和 textarea 一样古老,因为这种转换在机械上很简单,但只要文本稍长,手工做就极其乏味。

文本类大小写是写作者、编辑、营销人员和记者最常用的一族。UPPERCASE 和 lowercase 适合统一稿件风格,或者把一封被转发过来的全大写邮件压下声调。Title Case 用于标题和书名。Sentence case 已经成为现代 Web 正文、UI 微文案、按钮标签和说明文字的标准——过去十年间,Google、Apple 和 Microsoft 的风格指南都收敛到了这条线上。嘲讽变体(iNVERSE cASE、aLtErNaTiNg cAsE、RaNdOm CaSe)则源自互联网文化,尤其是用来讽刺性引用对方原话的「海绵宝宝梗」;alternating case 是严格的确定性变体,random case 是混乱的那种。

编程命名格式是开发者每天都在用的一族。camelCase 是 JavaScript、Java、Swift、Kotlin 标识符的标准。PascalCase 是大多数面向对象语言的类名标准,也是 React、Vue、Angular 中组件名的标准。snake_case 是 Python、Ruby、Rust、Elixir 以及大多数数据库列名的标准。kebab-case 是 CSS 类名、URL slug 和 HTML 属性的标准。CONSTANT_CASE 是环境变量、顶层常量和宏名的标准。dot.case 用于命名空间(Java 包、MongoDB 字段路径)。path/case 用于 URL 和文件系统路径。Header-Case 是规范的 HTTP/1.1 header 约定(Content-Type、Access-Control-Allow-Origin)。

底层真正值得讲的工程,是把输入字符串切成语义化「单词」的那个分词器。按空白切分容易;难的是识别没有空白分隔的词边界。标准约定——被 lodash、change-case npm 包、Python PEP 8 以及大多数真实代码库采用——会在三种过渡处插入边界:小写到大写(parseHTML → parse / HTML)、大写到大写到小写(XMLHttpRequest → XML / Http / Request)、字母到数字 / 数字到字母(file2x → file / 2 / x)。再加上显式分隔符:连字符、下划线、句点、斜杠、反斜杠。靠这一套分词器,你可以粘贴任何格式的标识符——camelCase、snake_case、kebab-case、混合——并干净地转换到任何其他格式,无需手工清理。

你眼前这款工具会把分词器与全部 15 种变换完全用 JavaScript 在浏览器中跑完。没有网络调用、没有服务器、没有日志、没有记录你键入内容的 cookie。每一次按键,每一种大小写的输出都会即时更新,没有防抖延迟。每张卡片上的「复制」按钮只把那一种格式写入剪贴板。「重新洗牌」只会重新摇骰随机大小写,不影响其他输出。一切都为真实工作的速度而设计——粘贴、扫一眼、复制、再粘到别处。

如果还需要相关的文本工具,字数统计负责长度与阅读时间指标,文本对比逐行比较两段文本,正则测试验证模式对样例输入的匹配情况。它们一起覆盖了开发者或内容工作者在浏览器中处理文本的大多数工作。

// The tokenizer that powers every programming-case conversion
function tokenize(input) {
  return input
    .replace(/([a-z0-9])([A-Z])/g, '$1 $2')      // lower→upper: parseHTML → parse HTML
    .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')   // acronym boundary: XMLHttp → XML Http
    .replace(/([A-Za-z])(\d)/g, '$1 $2')          // letter→digit: file2 → file 2
    .replace(/(\d)([A-Za-z])/g, '$1 $2')          // digit→letter: 2x → 2 x
    .replace(/[\s\-_./\\]+/g, ' ')                // collapse separators
    .split(' ').filter(Boolean);
}

// Then each case is a one-liner over the tokens
const camelCase  = (s) => tokenize(s).map((t, i) => i === 0 ? t.toLowerCase() : cap(t)).join('');
const snakeCase  = (s) => tokenize(s).map(t => t.toLowerCase()).join('_');
const kebabCase  = (s) => tokenize(s).map(t => t.toLowerCase()).join('-');
const PascalCase = (s) => tokenize(s).map(cap).join('');

function cap(t) {
  return t.charAt(0).toUpperCase() + t.slice(1).toLowerCase();
}

核心特性

15 种大小写同屏可见

粘贴你的文本,每一种大小写都会即时渲染在双栏网格里。不用先选格式、不用穿越下拉框——扫一眼网格、复制你要的那张。文本大小写和编程命名格式分两块陈列,一眼就能找到对的卡片。

面向编程命名的智能分词器

识别小写到大写边界(camelCase)、大写到大写到小写边界(XMLHttpRequest → XML/Http/Request)、字母到数字边界(file2x),以及所有常见分隔符(-、_、.、/、\、空白)。与 lodash 和 change-case npm 的约定一致,因此输出会按真实代码库期望的方式来回往返。

逐卡复制 + 实时反馈

每张输出卡都自带「复制」按钮——点一次就只把那一种格式送进剪贴板。按钮短暂切到「已复制!」给你确认。不用框选、不用右键。

随键入实时更新

每一种大小写都随每次按键即时重渲染,没有防抖延迟。没有「转换」按钮、没有页面刷新、没有等待。为真实编辑速度打造——粘贴、扫一眼、复制、完成。

随机大小写可重新洗牌

随机大小写的输出可以通过「重新洗牌」按钮独立重摇,不会扰动任何其他输出或输入文本。在同一段文本上想要另一种「海绵宝宝梗」变体时很好用。

保留空白与标点

文本类格式(UPPERCASE、lowercase、Title、Sentence、iNVERSE、aLtErNaTiNg、RaNdOm)按设计保留每一个空格、换行和标点。粘贴多段落文档,格式完整保留——只有字母大小写变化。

Unicode 友好的大小写映射

使用支持 Intl 的 `toLocaleLowerCase` 与 `toLocaleUpperCase` 方法,能正确处理土耳其语带点/无点的 İ/ı、德语 ß、希腊语词尾 sigma 以及其他依赖 locale 的大小写。分词器能识别任意文字系统的字母(Unicode \p{L})。

100% 浏览器端隐私

所有转换都在你的浏览器本地完成。你的文本永远不会上传、不会被记录、不会被存储、不会被分析。包含未公开的产品名、内部变量方案、未发布的新闻稿草稿,以及任何保密材料都可放心使用。键入时网络请求数为零——可在浏览器 Network 面板自行验证。

缩略词来回往返保留结构

把 XMLHttpRequest → xml_http_request → XmlHttpRequest 这样来回转换,结构能干净地还原。这是 Python PEP 8 和 JS change-case 包共同采用的约定——在代码库做大小写约定迁移时,不需要逐字母手工拆分。

大小写转换工具对比

lodash(_.camelCase、_.snakeCase、_.kebabCase、_.startCase)

JavaScript 库

大多数 JS 代码库的参考实现。在常见用例上与本工具产出一致。lodash 对部分边界情况的 Unicode 处理稍有不同。代码里用 lodash;做一次性转换或在重构时快速抽查用本工具。

change-case npm 包

JavaScript 库

模块化、可 tree-shake 的大小写转换库——每种格式一个函数。本工具的分词器与 change-case v5+ 的约定完全一致,所以 ASCII 输入下输出逐字节相同。只想在 bundle 里塞一两个函数时用 change-case;交互式转换用本工具。

VS Code 内置大小写命令

编辑器命令

VS Code 自带 `Transform to Uppercase`、`Transform to Lowercase`、`Transform to Title Case` 命令(Cmd-Shift-P 搜索)。原生不带 camelCase、snake_case 等编程格式;「change-case」之类扩展可以补上。文本已在编辑器中时最方便;要做剪贴板流转换,本工具更快。

convertcase.net

浏览器工具

最早的在线大小写转换器——只覆盖文本类格式(UPPERCASE、lowercase、Sentence、Title、alternating、inverse),没有编程命名格式。自 2000 年初就存在,至今仍是许多文本大小写搜索的头部结果。本工具覆盖了相同的文本格式,并额外加入了 8 种编程命名格式。

Microsoft Word 的「更改大小写」(开始 > 更改大小写)

桌面应用

Word 在「开始」选项卡上提供「更改大小写」按钮:Sentence case、lowercase、UPPERCASE、Capitalize Each Word、tOGGLE cASE。没有编程命名格式。工作流要求你在 Word 里、文件得打开。文本已在文档里时用 Word;在浏览器标签里时用本工具。

Apple Pages / TextEdit 的字符变换

桌面应用

macOS 的 Pages 与 TextEdit 提供「编辑 > 转换」:Make Upper Case、Make Lower Case、Capitalize。没有 camelCase、snake_case 等编程变体。在这两个应用里处理短文本很快;不适合做代码标识符工作。

在线单一编程命名转换器(例如 camelcasse.com)

浏览器工具

专注单一变换的转换器(只做 camelCase、只做 snake_case)。可扫的格式更少、UI 更聚焦。本工具一次显示全部 15 种,跨多种格式重构时更快——但如果你永远只需要一种,单一格式工具也够用。

大小写转换示例

全大写邮件主题 → Sentence case

URGENT: PLEASE REVIEW THE Q4 BUDGET PROPOSAL BEFORE FRIDAY

Sentence case 输出:"Urgent: please review the q4 budget proposal before friday"——立刻消除全大写的吼叫感,便于转发或礼貌回复。Title Case 输出:"Urgent: Please Review The Q4 Budget Proposal Before Friday"——如果你更想保留正式标题感。两种结果同时出现;按场景挑一种就行。

snake_case 变量 → camelCase

user_profile_image_url

camelCase 输出:"userProfileImageUrl"——直接放进 JavaScript、Java 或 Swift。PascalCase:"UserProfileImageUrl"——用于 C# / .NET 属性名或 React 组件名。kebab-case:"user-profile-image-url"——用于 CSS 类名或 URL slug。CONSTANT_CASE:"USER_PROFILE_IMAGE_URL"——用于环境变量或顶层常量。一次粘贴,得到四个可直接使用的标识符。

缩略词密集的类名(XMLHttpRequest)

XMLHttpRequest

分词器能识别 XML / Http / Request 的边界。输出:snake_case → "xml_http_request"、kebab-case → "xml-http-request"、CONSTANT_CASE → "XML_HTTP_REQUEST"、Header-Case → "Xml-Http-Request"。这正是 lodash、change-case 包以及 Python PEP 8 缩略词处理通用的约定——从一个 JS 类名重构为 Python 模块名只需粘贴一次,不必逐字母手工拆分。

页面标题转 URL slug(Title → kebab-case)

10 Tips for Faster JavaScript: A Complete Guide

kebab-case 输出:"10-tips-for-faster-javascript-a-complete-guide"——这是大多数 CMS(WordPress、Ghost、Hugo)默认生成的 URL 安全 slug。snake_case:"10_tips_for_faster_javascript_a_complete_guide"——用于文件名约定。分词器会干净地丢掉冒号和其他标点;不需要先手工清理标题。

从 camel-case 生成 HTTP header 名(Header-Case)

accessControlAllowOrigin

Header-Case 输出:"Access-Control-Allow-Origin"——这正是 HTTP 规范使用的拼写,可直接放进 fetch() 选项对象或服务端响应里。kebab-case:"access-control-allow-origin"——同一规范形式但全部小写(一些 HTTP 库在内部使用这种写法)。这是把一个 JS 对象属性翻成真实 header 名最快的方式。

从可读配置生成常量(CONSTANT_CASE)

max retries per request

CONSTANT_CASE 输出:"MAX_RETRIES_PER_REQUEST"——可直接放进配置文件 `const MAX_RETRIES_PER_REQUEST = 3` 或 `.env` 文件 `MAX_RETRIES_PER_REQUEST=3`。snake_case:"max_retries_per_request"——用于 Python 风格的模块级常量或 YAML key。同一来源,两个去向,无需手工编辑。

句子 → 海绵宝宝梗(aLtErNaTiNg cAsE)

this is fine, everything is going great

aLtErNaTiNg cAsE 输出:"tHiS iS fInE, EvErYtHiNg iS gOiNg GrEaT"——这是经典的「海绵宝宝」嘲讽格式。交替是跨字母全局切换,不是按词重置,这与 convertcase.net 及其他梗生成器的做法一致。RaNdOm CaSe:每个字母独立翻转——想要同样讽刺感但更混乱时使用。

如何使用大小写转换器

  1. 1

    粘贴或键入你的文本

    点击编辑框开始键入,或粘贴任意文本——句子、段落、标识符、标题都行。每一种大小写输出都会即时更新。想看看各种格式怎么差异,可以点「示例」载入一段演示文案。

  2. 2

    扫一眼网格

    上半区是 7 种文本大小写(UPPERCASE、lowercase、Title、Sentence、iNVERSE、aLtErNaTiNg、RaNdOm)。下半区是 8 种编程命名格式(camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE、dot.case、path/case、Header-Case)。每张卡片显示格式名、一行说明和转换后的输出。

  3. 3

    在你要的那张卡上点「复制」

    每张输出卡都有自己的小「复制」按钮。点一次——那一种格式就进了剪贴板,按钮闪一下「已复制!」,可以去别处粘贴了。不需要先框选输出文本。

  4. 4

    如有需要重新洗牌随机大小写

    如果想要同一段文本的另一种 RaNdOm CaSe 变体,点击操作栏的「重新洗牌」。只有随机大小写的输出会变;输入文本和其他所有输出都保持不动。

  5. 5

    用完后清空

    点「清空」可清空编辑框并重置所有输出。「示例」会重新载入演示文案。所有操作都是即时的,且不会发送到任何服务器。

常见大小写转换错误

把整段段落塞进 snake_case

把多词句子粘进 snake_case 输出,会把它折叠成一个巨长的标识符——这从规则上是输入的正确 snake_case,但绝不是你真正想要的标识符。snake_case 一次只用于一个标识符(一个变量名或词组)。段落级文本请使用文本类变换。

✗ 错误
输入:"the quick brown fox jumps over the lazy dog"
snake_case 输出:the_quick_brown_fox_jumps_over_the_lazy_dog
结果:一个 50 字符长、没人要的标识符。
✓ 正确
输入:"quickBrownFox"
snake_case 输出:quick_brown_fox
结果:一个干净的三 token 标识符。

误以为本工具遵循 APA 标题规则

本工具的 Title Case 把每个单词都大写——`Hello A World Of Examples`,而不是 AP 风格的 `Hello a World of Examples`。APA、Chicago、AP 风格指南都会在标题里把短冠词与介词保持小写。如果你需要 APA 风格的标题,请使用专门的标题大小写工具。对于通用首字母大写(每个单词都大写),本 Title Case 是对的。

✗ 错误
输入:"a tale of two cities"
本工具 Title Case:A Tale Of Two Cities
期望(AP 风格):A Tale of Two Cities
✓ 正确
通用首字母大写就用本工具。
编辑性标题请用 AP 风格的标题工具。
不同工具,不同约定。

以为 PascalCase 来回往返会保留缩略词大写

XMLHttpRequest 会被切成 XML / Http / Request,再 PascalCase 化为 XmlHttpRequest。这是当前的约定(这样分词器才能干净地来回往返),但如果你的代码库保留缩略词大写(XMLHttpRequest 仍是 XMLHttpRequest),结果就不会一致。做项目级重命名前先抽查。

✗ 错误
输入:XMLHttpRequest
PascalCase 输出:XmlHttpRequest
期望(保留缩略词):XMLHttpRequest
✓ 正确
接受首字母大写的缩略词形式,或者
在转换后手动还原缩略词,或者
使用尊重缩略词提示的分词器。

把 URL 粘进来导致斜杠丢失

把 `https://example.com/api/users` 粘进 snake_case,会剥掉所有斜杠和句点,得到 `https_example_com_api_users`——从规则上正确,但作为 URL 完全没用。URL 本来就是 path/case 格式;不要把它丢进编程命名变换里。如果要从 URL 里剥掉协议或主机,请先用 URL 解析工具。

✗ 错误
输入:https://example.com/api/users
snake_case 输出:https_example_com_api_users
结果:已经不再是 URL。
✓ 正确
输入:https://example.com/api/users
URL 别动——它本来就是对的格式。
需要 slug 时请手工解析 URL 路径。

混淆 dot.case 与对象属性访问写法

dot.case 输出是 `user.profile.image`——用真实句点连接的小写 token,适合命名空间(Java 包、MongoDB 字段路径、TOML key)。它与 JavaScript 的属性访问写法(`user.profile.image` 看起来一样,但意思是「user 的 profile 属性的 image 属性」)不是一回事。如果你需要的是属性访问路径,dot.case 凑巧产生了正确字符串;如果你要的是程序里的标识符,请改用 camelCase 或 snake_case。

✗ 错误
目标:"设置 user.profile.image 这个变量"
用 dot.case 输出当变量名:`user.profile.image`
在大多数语言中这是属性访问,不是标识符。
✓ 正确
单个变量:userProfileImage(camelCase)。
命名空间化的 key:user.profile.image(dot.case 是对的)。
按目标语法挑大小写。

期望 Sentence case 能正确处理缩写

Sentence case 会把任何 `.` 加空白当作句子边界,包括 `Mr. Smith arrived.`——它会被正确处理为 `Mr. Smith arrived.`,但 `e.g. this example` 会变成 `E.g. This example`(`g.` 被误判为句子终止)。缩写上的误判是每个基于正则的句子识别器都有的已知限制;对编辑级精度,请手工调整输出。

✗ 错误
输入:"e.g. this is an example. Read more."
Sentence case 输出:"E.g. This is an example. Read more."
`g.` 被误判为句子终止。
✓ 正确
先跑一次 sentence case,再手工修少数缩写边界。
或者改写以避免句内句点。
(NLP 级句子识别属于另一个工具品类。)

谁在使用这款工具

开发者跨语言改名标识符
把一个 JS 变量迁移成 Python 的 snake_case 名、把一个 CSS 类迁移成 React 的 PascalCase 组件、或者把一个环境变量迁移成配置常量。一次粘贴源名,复制对应输出——不需要逐字母手工转换。
后端开发翻 HTTP header 名
Content-Type、Access-Control-Allow-Origin、X-Forwarded-For 这类 HTTP header 都有特定的 Header-Case 拼写。粘贴一个 camelCase JS 属性名,复制规范的 header 形式——适用于 fetch() 选项、服务端中间件和代理配置。
写作者去掉全大写邮件的吼叫感
转发来的全大写邮件和聊天消息读起来像在吼。粘贴到 Sentence case 来缓和语气,或粘到 Title Case 保留精致标题感。空白与标点完整保留。
营销人员起草标题与正文
标题用 Title Case,正文和说明用 Sentence case——这是大多数现代风格指南(AP、Google、Apple)推荐的约定。两种结果同时显示,方便对比哪种更贴合所在版面。
SEO 专员生成 URL slug
kebab-case 是每个 CMS 期望的 URL slug 约定。粘贴一个带标点和大小写的页面标题,复制 kebab-case 输出——可直接放进 WordPress、Ghost 或 Hugo 的 slug 字段。分词器会干净地去掉标点。
DBA 命名列名与表名
snake_case 是 PostgreSQL、MySQL、SQLite 和大多数 ORM 通用的列名和表名约定。粘贴一个可读标签或一个 camelCase API 字段名,复制对应的 snake_case 版本。
前端开发书写 CSS 类名
kebab-case 是 CSS 规范级的类名约定(BEM、Tailwind 工具类,以及大多数设计系统)。粘贴一个 camelCase 的 JS 组件名,复制 kebab-case 版本,用于匹配的 CSS 模块。
梗图制作者与讽刺爱好者
aLtErNaTiNg cAsE 和 RaNdOm CaSe 是用来嘲讽或讽刺性引用的「海绵宝宝梗」格式。「重新洗牌」可在不改输入的前提下重摇随机变体——多试几次直到顺眼为止。

分词与转换规则

分词规则
通过在四类边界处插入空格来抽取 token:小写到大写(parseHTML → parse HTML)、大写到大写到小写(XMLHttp → XML Http)、字母到数字(file2 → file 2)、数字到字母(2x → 2 x)。然后把常见分隔符(空白、连字符、下划线、句点、斜杠、反斜杠)合并为单个空格。再按空格切分、剪掉空白、丢弃空项。这与 lodash 和 change-case 包的约定一致。
编程命名输出会剥离标点
camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE、dot.case、path/case、Header-Case 都会产出干净的标识符——输入中的标点(逗号、句号、括号)会被丢掉,因为大多数语言的标识符里不能出现它们。如果你需要保留标点,请使用文本类输出之一(UPPERCASE、lowercase、Title、Sentence、iNVERSE、aLtErNaTiNg、RaNdOm)。
文本类输出保留一切
UPPERCASE、lowercase、Title Case、Sentence case、iNVERSE cASE、aLtErNaTiNg cAsE、RaNdOm CaSe 全部保留空白、换行和标点。粘贴多段落文档,结构原样保留——只有字母大小写变化。这些变换逐字符操作,不做分词。
Title Case(朴素变体)
本工具的 Title Case 把每个被空白分隔的单词首字母大写、其余小写。APA、Chicago、AP 风格指南建议把短小冠词与介词(a、an、the、of、in、for)保持小写;那些变体差异足够大,值得放在一个专门的工具里。本 Title Case 适合通用首字母大写;AP 风格标题请用专门的标题工具。
Sentence case 的边界识别
Sentence case 先把全部小写,再把整段输入的首字母以及任何句子终止符(. ! ? 。 ! ?)之后的首个非空白字母大写。识别器不会尝试为 Mr.、U.S.A. 这类缩写做消歧——少见的误判带来的噪音比偶尔漏判要严重。
Alternating case 使用全局切换位
aLtErNaTiNg cAsE 在小写与大写之间逐字母翻转,使用一个会跨越单词边界的全局切换位。非字母字符不会推进切换位。这与 convertcase.net 及其他梗生成器采用的约定一致——同一输入可预测且可复现。
Random case 使用 Math.random()
RaNdOm CaSe 用 Math.random() 对每个字母独立掷一次硬币。每次点击「重新洗牌」都得到不同结果。该随机源不是密码学强度;用于日常文本没问题,但不要用于密码生成(密码请使用专门的密码生成器)。
Unicode 与 locale 友好的大小写映射
使用 `toLocaleLowerCase()` 与 `toLocaleUpperCase()`,能正确处理土耳其语带点/无点的 İ/ı、德语 ß(标准处理下大写为 SS)以及其他依赖 locale 的大小写映射。分词使用 \p{L} 识别任意文字系统的字母。编程类输出默认按 ASCII 标识符字符约束,以兼顾跨语言一致性。

选择大小写的最佳实践

选择与你代码库一致的格式
变量名该用哪种大小写,标准不是「哪种最好看」——而是「你的代码库已经在用哪种」。JavaScript 与 Java:变量与方法用 camelCase,类名用 PascalCase。Python、Ruby、Rust:除类名(PascalCase)之外都用 snake_case。CSS 与 URL:kebab-case。环境变量与常量:CONSTANT_CASE。和本地约定一致;一致性比理论正确更重要。
UI 微文案用 Sentence case
过去十年,Google、Apple、Microsoft 的设计系统都把按钮标签、菜单项、对话框文案以及其他 UI 微文案统一到了 Sentence case。在 UI 里继续用 Title Case 会显得老派、略带吼叫感。Title Case 留给主标题、页面 title 和书名就好。
粘贴前先剥掉智能引号
从 Microsoft Word、Google Docs 或 Apple 备忘录粘贴可能带入智能引号("")、长破折号(—)以及其他看起来与 ASCII 一致但编码不同的排版字符。本工具的大小写变换能正确处理它们,但如果你接着要把结果转成编程命名的标识符,建议先手动替换为 ASCII 等价字符,避免在代码编辑器里出现意外。
编程命名一次只转一个标识符
camelCase、snake_case、kebab-case 等会把整段输入产出为单一标识符。如果你把整段句子粘进 snake_case,得到的是一个巨长的标识符——技术上正确但几乎不是你想要的。标识符转换请一次贴一个词或词组。段落级文本请使用文本类变换。
改名前先验证缩略词的来回往返
XMLHttpRequest → xml_http_request → XmlHttpRequest 是标准来回往返;缩略词在还原时会变成首字母大写形式。如果你的代码库保留原始缩略词大写(XmlHttpRequest 仍是 XMLHttpRequest),来回往返就不会完全一致。在做项目级重命名前,请先抽查几个例子。
HTTP/1.1 用 Header-Case,HTTP/2 用 kebab-case
HTTP/1.1 对 header 名大小写不敏感,但 Header-Case(Content-Type、X-Forwarded-For)是大家约定俗成、对人类可读的拼写。HTTP/2 明确要求 header 名全部小写——这种场景请用 kebab-case(content-type、x-forwarded-for)。拿不准时,kebab-case 在两种协议里都能跑。
随机大小写用于变体,不用于安全
随机大小写好玩但并非密码学意义上的随机——它使用 Math.random(),足够支撑视觉变体,但不足以承担「随机性真的重要」的任何场景(密码生成、安全 token、A/B 测试)。需要密码学强度时请使用专门的密码生成器。

常见问题

大小写转换器是做什么的?
大小写转换器接收一段文本,并把它重新渲染为另一种大小写格式——UPPERCASE、lowercase、Title Case、Sentence case,或者 camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE 等编程命名格式之一。本工具会一次性显示所有 15 种常用变体,所以你不必在粘贴之前先选好要哪种转换;粘贴、扫一眼网格、复制你需要的那张。整个过程在浏览器中由 JavaScript 完成——无需注册、不上传、不经过服务器,也不会对你粘贴的文本做任何分析。
camelCase、PascalCase 和 snake_case 有什么区别?
这三者都是为多词标识符在代码里命名的约定。camelCase 首字母小写,其后每个单词的首字母大写,无分隔符:`userProfileImage`。PascalCase 把包括第一个在内的每个单词首字母都大写:`UserProfileImage`——多数语言用它命名类,React 用它命名组件。snake_case 全部小写,用下划线连接:`user_profile_image`——这是 Python、Ruby、Rust 以及大多数数据库列名的约定。kebab-case 同样的思路改用连字符:`user-profile-image`——用于 CSS 类名、URL slug 和 HTML 属性。CONSTANT_CASE 大写加下划线:`USER_PROFILE_IMAGE`——用于常量和环境变量。挑一个与你代码库现有风格一致的就好。
分词器如何处理 XMLHttpRequest 或 parseHTML 这类缩略词?
分词器能识别「大写到大写到小写」边界(XMLHttp → XML / Http)和「小写到大写」边界(parseHTML → parse / HTML)。所以 `XMLHttpRequest` 会被切成 `XML`、`Http`、`Request` 三个 token,并干净地转成 `xml_http_request`、`xml-http-request`、`XML_HTTP_REQUEST` 或 `Xml-Http-Request`。这与 lodash、change-case npm 包以及 Python PEP 8 的约定一致——是跨语言处理缩略词的事实标准。唯一的取舍:再转回 PascalCase 时缩略词会变成首字母大写形式(`XMLHttpRequest` 来回转换后会变为 `XmlHttpRequest`),这也是为避免再次分词歧义而采用的标准约定。
Title Case 和 Sentence case 有什么区别?
Title Case 把每个单词的首字母都大写、其余小写:`Hello World Example`。本工具采用朴素变体——逐词大写——这也是日常使用中大多数人理解的「title case」。一些风格指南(APA、Chicago、AP)建议把短小的冠词与介词如 `a`、`an`、`the`、`of`、`in`、`for` 保持小写;这类变体差异足够大,更适合放在一个独立的「headline」工具里。Sentence case 只把每个句子的首字母(以及整段输入的第一个字母)大写:`Hello world example. This is a sentence.` 标题与书名用 Title Case,描述、说明、正文用 Sentence case。
我的文本会被上传到任何地方吗?
不会。每一种大小写转换都 100% 在你的浏览器里由 JavaScript 完成。你的文本永远不会被传输、不会保存在任何服务器、不会被记录、不会被人工或 AI 分析。你可以在浏览器 Network 面板自行验证——在编辑框里键入或点击「复制」触发的网络请求数为零。这让本工具可以放心用于未公开的产品名、内部变量方案、法律文件草稿、记者源材料笔记,以及任何其他保密材料。本工具也不会用 cookie 保存输入文本。
如何把任意格式的文本转为 camelCase?
把文本粘贴到上方编辑框,再复制 camelCase 输出卡。任何起始格式都能转换:带空格的句子(`hello world` → `helloWorld`)、snake_case(`hello_world` → `helloWorld`)、kebab-case(`hello-world` → `helloWorld`)、PascalCase(`HelloWorld` → `helloWorld`)、CONSTANT_CASE(`HELLO_WORLD` → `helloWorld`),甚至混合缩略词(`XMLHttpRequest` → `xmlHttpRequest`)。智能分词器会自动识别所有常见边界,所以你不需要事先清理输入。
本工具支持 Unicode 与非英文字母吗?
支持。大小写转换使用 JavaScript 中支持 Intl 的 `toLocaleLowerCase()` 与 `toLocaleUpperCase()` 方法,可以正确处理土耳其语带点/无点的 `İ`/`ı`、德语 `ß`(在标准处理下大写为 `SS`)、希腊语词尾 sigma 以及其他依赖 locale 的大小写映射。分词使用支持 Unicode 的正则模式,能识别任意文字系统的字母(`\p{L}`)。对编程类输出(camelCase、snake_case 等),分词器默认只把 ASCII 字母和数字视为标识符字符——这与大多数编程语言的约束一致——所以输入中的非拉丁字母会在 token 内部原样传递。
dot.case 和 path/case 有什么区别?
二者都是小写、用分隔符连接的标识符——唯一的区别是分隔符。`dot.case` 用句点:`hello.world.example`。常见于命名空间(Java 包、Lodash 方法、MongoDB 字段路径)和配置文件 key(TOML、INI)。`path/case` 用正斜杠:`hello/world/example`。这是 URL 路径、文件系统路径和 Git ref 的约定。两者由同一套分词产生,相互转换只是替换分隔符。当标识符代表数据内部的层级 key 时用 dot.case;当它代表一个真实位置时用 path/case。
为什么分词器会在数字处切分(file2x → file, 2, x)?
把数字作为 token 边界是大多数现代代码库遵循的约定——`parseUTF8` 来回转换后应该是 `parse_utf_8`(或 PascalCase 下的 `parseUtf8`),而不是 `parseutf_8`。分词器会把每一次字母到数字、数字到字母的过渡视作边界,所以 `file2x` 会被切成 `file / 2 / x`。如果你更希望让数字与前面的字母粘在一起,请粘贴一份手工分好词的版本(`file 2x`,带一个真实空格),分词器会尊重这个空格。这个约定与 change-case 包和 Python PEP 8 保持一致。
Alternating case 和 random case 有什么不同?
Alternating case(aLtErNaTiNg cAsE)确定性地在小写和大写之间交替——每个奇数位字母大写、每个偶数位字母小写,与单词边界无关。同一输入每次得到的结果都相同。Random case(RaNdOm CaSe)对每个字母独立掷一次硬币,所以每次粘贴都得到不同的结果。点击「重新洗牌」可以在不清空编辑框的情况下重新摇骰随机输出。两者都是嘲讽格式(俗称「海绵宝宝梗」);alternating 是严格变体,random 是混乱变体。其他大小写输出不会受「重新洗牌」影响。
本工具能转换 HTTP header 名吗?
可以——使用 Header-Case 输出。它会把每个 token 首字母大写、并用连字符连接,产出符合规范的 HTTP header 拼写,如 `Content-Type`、`Access-Control-Allow-Origin`、`X-Forwarded-For`。粘贴一个 camelCase 的 JS 属性名(`accessControlAllowOrigin`),就能得到 HTTP/1.1 规范使用的精确 header 拼写,可直接放进 `fetch()` 选项对象或服务端响应。注意 HTTP/2 倾向于使用全小写 header 名(对应变体请用 kebab-case);HTTP/1.1 大小写不敏感,但 Header-Case 拼写是约定俗成、对人类可读的形式。
能一次性转换整段文字吗?
可以——对文本类格式(UPPERCASE、lowercase、Title Case、Sentence case、iNVERSE、aLtErNaTiNg、RaNdOm)而言,本工具会按设计保留全部空白、换行和标点,所以你可以粘贴一整段、甚至一整份多页文档。编程类格式(camelCase、snake_case 等)会主动剥离标点,因为它们产出的是标识符;把一整段粘进 camelCase 会把它折叠成一个巨长的标识符,从规则上没错但几乎没用。文档级文本请只用文本类输出;标识符转换请一次贴一个。
与 lodash、change-case 以及其他大小写库相比有多准?
对所有常见输入,本工具的分词器与大小写变换与 change-case npm 包(`change-case` v5+)产出的结果逐字节一致——同样的缩略词处理、同样的「数字作为边界」规则、同样的 Unicode 字母识别。lodash 的 `_.camelCase`、`_.snakeCase`、`_.kebabCase` 与 `_.startCase` 用的是稍有差异的分词器(它会在更多字符上切分,对某些 Unicode 类别处理不同),但在 ASCII 输入下常见用例的输出是一致的。本工具的 Title Case 是朴素变体(逐词大写);lodash 的 `_.startCase` 也是同样做法。如果你需要 APA 或 Chicago 风格的标题大小写规则(短介词保持小写),请使用专门的标题大小写库——本工具针对大多数人搜索的那种用法做了优化。
Sentence case 和 Title Case 看起来差不多,为什么两个都要?
只要输入超过一个词,二者就会分道扬镳。Sentence case 全部小写,只把每个句子的首字母大写:`hello world. this is a sentence.` 变成 `Hello world. This is a sentence.` Title Case 把每个单词首字母大写:`Hello World. This Is A Sentence.` 在大多数现代风格指南(Google、Microsoft、Apple)中,Sentence case 是正文、说明和 UI 微文案的约定。Title Case 是经典排版中标题、页面 title、书名以及对话框标题的约定。现代 Web 风格越来越倾向于除主标题外一律使用 Sentence case。

免费正则表达式测试器 — 在线实时匹配与调试

文本处理

在浏览器里实时测试正则表达式:高亮匹配、捕获组、命名分组、替换预览、字符串切分与逐 token 解释,支持 JavaScript(ECMA-262)方言、g/i/m/s/u/y/d 七个 flag、ReDoS 超时保护。100% 本地运行、免费、无需注册。

在线文本对比与差异工具

文本处理

在浏览器内即时对比两段文本。双栏并排展示、行内单词级高亮、统一 diff 补丁导出,支持忽略大小写、空白与空行。100% 本地浏览器处理,无需上传,文本不离开你的设备。

免费字数统计与字符计数工具

文本处理

在浏览器里实时统计单词数、字符数、句子、段落与阅读时间,并对照 Twitter、meta description、Instagram 等平台字符限制给出实时进度条。免费、隐私、无需注册。

进制转换器 — 二进制、十六进制、十进制、八进制互转

转换工具

在线免费进制转换工具,支持二进制、八进制、十进制、十六进制及 2-36 任意进制互转。无需注册,数据不离开浏览器,即时获取结果。

Base64 解码与编码工具

编码和格式化

免费在线 Base64 解码编码工具。实时转换,支持中文和 Emoji,100% 浏览器端运行,数据不离开设备,无需注册。

Crontab 生成器与 Cron 表达式构建工具

日期和时间

在浏览器里构建、校验并解读 cron 表达式,按本地时间或 UTC 实时预览下一次运行。支持 POSIX 五字段语法、常用预设和中文描述。免费、隐私、无需注册。