§

粘贴文本

§

所有大小写

text
  • camelCase
  • PascalCase
  • snake_case
  • CONSTANT_CASE
  • kebab-case
  • dot.case
  • path/case
  • Title Case
  • Sentence case
  • lower case
  • UPPER CASE

命名规范折射出每个团队的工程文化:阿里巴巴《Java 开发手册》对类名使用 PascalCase、对成员变量使用 camelCase、对常量使用 CONSTANT_CASE,腾讯与字节跳动的内部 Go 与 Python 风格指南也大量沿用 snake_case;清华大学与北京大学计算机系的开源项目以及 PingCAP TiDB 源码均严格遵守 Google 的中英文代码风格指南。GB/T 8567 软件文档规范与国家标准对标识符命名亦有要求,程序员的 GitHub 开源仓库在 URL slug 上普遍采用 kebab-case,DevOps 流水线则常把 dot.case 的 YAML 键翻成 snake_case 喂给后端服务。

什么是文本大小写转换?

文本大小写转换接收一段输入字符串,并以另一种字母大小写约定输出相同的单词。最常见的目标是 camelCasePascalCase(大多数花括号语言的标识符)、snake_caseCONSTANT_CASE(Python、Ruby、Rust、C 宏)、kebab-case(URL、CSS 类名、HTML 属性、npm 包名)、dot.case(配置键、JavaScript 对象路径)、path/case(类文件系统的标识符)、Title CaseSentence case(标题与正文),以及完整的 lower caseUPPER CASE。此转换器会检测输入中的自然单词边界 — 空白、连字符、下划线、点、斜杠以及标记 helloWorld 风格标识符的小写到大写转换边界 — 然后按每种目标大小写所需的分隔符与大写模式重新组装。

大小写转换是如何工作的?

你的输入完全在浏览器内由一个小型的纯 JavaScript 分词器和十一个大小写格式化器处理。高层步骤如下:

  1. 输入按原样从文本框中读取 — 你粘贴的每个字节都仅保存在本地内存中。
  2. 分词器按空白、下划线、连字符、点和斜杠切分输入,然后按小写到大写的边界进一步切分(因此 helloWorld 变为 ["hello", "World"]),并按字母到数字的边界切分(因此 v2API 变为 ["v", "2", "API"])。
  3. 空 token 被过滤掉,余下的 token 使用 String.prototype.toLocaleLowerCase 转为小写,从而正确保留土耳其语、德语等区域设置中的 Unicode 字母。
  4. 然后十一个格式化器依次把 token 组装为每种目标大小写 — camelCase、PascalCase、snake_case、CONSTANT_CASE、kebab-case、dot.case、path/case、Title Case(带一个小词表,使 andtheof 等在非首尾时保持小写)、Sentence case、完整小写以及完整大写。
  5. 输出按每种大小写一行写入结果网格;每行都有自己的复制按钮,使用异步 Clipboard API,并以同步的 document.execCommand('copy') 作为旧浏览器的回退。

为什么使用大小写转换器?

  • 重构标识符:把 JavaScript 变量从 user_id 重命名为 userId、把 Python 函数从 helloWorld 重命名为 hello_world,或把 Rust 常量从 maxBuffer 改为 MAX_BUFFER,无需逐字符手工编辑。
  • 转换配置键:把一整份充满 camelCase 键的 JSON 配置一次粘贴就翻成给 Python 服务用的 snake_case YAML,或给 Helm chart 用的 kebab-case。
  • 撰写标题:粘贴一份草稿标题,即可同时读出 Title Case(带 Chicago Manual of Style 小词例外)和 Sentence case(AP Stylebook)两种形式 — 按你所在刊物的风格选择。
  • 生成 URL slug:粘贴一篇博客标题,把 kebab-case 形式直接复制到 CMS 的 slug 字段 — 分词器会处理标点和多词短语,不留下多余的分隔符。

大小写转换有哪些常见应用?

在字母大小写约定之间切换出现在软件工程、内容创作和数据工程的方方面面:

  • 代码重构:在风格指南变更时跨代码库重命名标识符(例如后端重写时把 JavaScript camelCase 改为 Python snake_case),不会引入拼写错误。
  • API 负载重塑:把 camelCase 的 JSON 键转为 snake_case 再喂给 Ruby on Rails 或 Django 后端,或者转为 kebab-case 用作 CSS-in-JS 的类名。
  • 撰写标题与 slug:从同一份源标题一次生成 Title Case 页面标题、Sentence case 元描述与 kebab-case URL slug。

大小写转换示例是什么样的?

Hello World API 粘贴到输入框。结果网格同时渲染十一行:helloWorldApi(camelCase)、HelloWorldApi(PascalCase)、hello_world_api(snake_case)、HELLO_WORLD_API(CONSTANT_CASE)、hello-world-api(kebab-case)、hello.world.api(dot.case)、hello/world/api(path/case)、Hello World Api(Title Case)、Hello world api(Sentence case)、hello world api(lower case)和 HELLO WORLD API(UPPER CASE)。同样的输入若粘贴为 helloWorldAPI,也会分词为相同的三个词 — 小写到大写边界检测器同样能处理这种形式。

这是在我的浏览器中运行的吗?

是。分词器与十一个大小写格式化器是约 120 行原生 JavaScript,运行在浏览器标签页内。没有任何内容被上传,没有 service worker 代理你的输入,转换步骤本身也不发起任何网络请求。唯一的出站流量是标准页面加载资源(CSS、字体、统计),你的文本永远不会到达 Ultim8Soft。

我应该为变量名选择哪种大小写格式?

取决于语言与团队的风格指南。JavaScript 与 TypeScript 代码库压倒性地把 camelCase 用于变量与函数,PascalCase 用于类与 React 组件,CONSTANT_CASE 用于环境变量名与模块级常量 — Google JavaScript 风格指南和 Airbnb 风格指南都这么规定。Python(PEP 8)、Ruby 和 Rust 偏好 snake_case 用于变量与函数、PascalCase 用于类、CONSTANT_CASE 用于模块级常量。C 与 C++ 代码库(Linux 内核、LLVM)对函数倾向于 snake_case,对预处理宏使用 CONSTANT_CASE。拿不准时,运行团队的 linter 或 formatter — 它会告诉你正在执行哪种约定。

输入是如何被分词的?

分词器首先按任意连续的空白、下划线(_)、连字符(-)、点(.)或斜杠(/)切分输入。每个产生的片段再按小写到大写的边界切分一次(因此 helloWorld 变为 ["hello", "World"]),并按字母到数字的边界切分(因此 v2API 变为 ["v", "2", "API"])。空 token 被过滤掉,剩余的 token 通过 String.prototype.toLocaleLowerCase 转为小写。然后格式化器以每种目标大小写所需的分隔符重新大写并重新拼接这些 token。该策略开箱即用地处理六种常见标识符形状 — camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE,以及普通的空格分隔散文。

对于 Unicode / 非 ASCII 字符怎么办?

Unicode 字母会完整往返。分词器使用 String.prototype.toLocaleLowerCasetoLocaleUpperCase,它们尊重区域特定的大小写规则 — 土耳其语带点与不带点的 i、德语 ß 大写为 SS、法语与西班牙语中的重音拉丁字母等等。不在分隔符集合(空白、_-./)中的非字母字符 — 例如数字、重音字母或 CJK 字符 — 会保留在它们所在的 token 内,大小写格式化器会原样输出。这意味着像 nœud_principal 这样的输入会分词为 ["nœud", "principal"],并干净地转换为 nœudPrincipal(camelCase)或 NœudPrincipal(PascalCase)。

此大小写转换器是一个单一的静态页面,完全在你的浏览器中运行分词器和十一个格式化器 — 没有第三方库、每次转换都不发起网络调用、无需账户。在上方粘贴任意文本,并排扫视十一种大小写输出,然后复制你需要的那一种。