大小写转换器

在大写、小写、标题格式、camelCase、snake_case 等命名规范之间转换文本

加载示例

输入

输出

本地运行 · 粘贴密钥安全无忧
转换结果将显示在此处…

什么是文本大小写转换?

文本大小写转换是将字符串的字母大小写或单词分隔模式进行变换的过程。大小写转换器接收如 "hello world" 这样的输入,并将其转换为 UPPERCASE、lowercase、Title Case、camelCase、snake_case、kebab-case 或其他命名规范。对于简单的 ASCII 文本,转换过程直截了当,但缩写词("XMLParser")、特定语言规则(土耳其语带点的 I)以及混合脚本字符串等边界情况会带来额外的复杂性。

编程语言、文件系统和代码风格指南各有其命名规范要求。JavaScript 变量通常使用 camelCase。Python 函数和变量遵循 PEP 8 的 snake_case 规范。CSS 类名使用 kebab-case。数据库列名因团队而异,但 snake_case 在 PostgreSQL 和 MySQL 中最为普遍。在数十个文件中手动切换这些命名规范既耗时又容易出错。

大小写规范在代码之外同样重要。标题格式(Title Case)遵循《芝加哥格式手册》和 APA 等风格指南的规则,其中冠词和短介词保持小写,除非位于句首。句子格式(Sentence case)仅将首词和专有名词大写。美式英语出版物默认在标题中使用 Title Case;而欧洲及技术文档通常使用 Sentence case。

为什么使用这个大小写转换工具?

粘贴任意文本,即可在九种大小写格式之间即时转换,无需安装 VS Code 扩展或编写临时脚本。

即时转换
选择目标格式,立即查看转换结果。无需请求服务器,无需等待。可在各格式之间切换,对比输出效果。
🔒
隐私优先处理
所有转换均通过 JavaScript 在您的浏览器中完成。文本始终保留在您的设备上,不会发送到任何服务器或存储在任何地方。
🔄
九种格式一站解决
UPPERCASE、lowercase、Title Case、Sentence case、camelCase、PascalCase、snake_case、kebab-case 和 CONSTANT_CASE。一次输入即可覆盖所有常见命名规范。
🌍
无需注册
打开页面即可开始转换。无需注册、无需浏览器扩展、无需安装桌面应用。支持任何配备现代浏览器的设备。

大小写转换工具使用场景

前端开发
将 API 响应中 snake_case 格式的组件属性名转换为 JavaScript 对象使用的 camelCase。在迁移至 BEM 或原子化命名体系时,将 CSS 类名从 camelCase 重命名为 kebab-case。
后端 API 设计
在数据库列名(snake_case)与 JSON 响应键(camelCase)之间映射字段时转换命名规范。验证序列化层是否输出预期的格式。
DevOps 与基础设施
从描述性短语生成 CONSTANT_CASE 格式的环境变量名。在与团队风格指南对齐时,在 snake_case 和 kebab-case 之间转换 Terraform 资源名称。
QA 与测试自动化
准备具有正确大小写格式的字段名测试数据。在上线前发现 API 接口与客户端预期之间的命名不一致问题。
数据工程
将 CSV 或 Excel 文件导入数据库时,对列标题进行规范化处理。将 "First Name" 等混合大小写标题转换为 snake_case 列名 first_name,以保持 schema 设计的一致性。
技术写作与文档
在文档中以正确的大小写格式引用代码标识符。将普通英语描述转换为 PascalCase 类名或 kebab-case URL 别名,以保持技术规格的一致性。

命名规范参考

每种命名规范对大写和单词分隔都有其特定规则。下表展示本工具支持的全部九种格式,以 "the quick brown fox" 为参考输入。

格式规则示例
UPPERCASEEvery letter capitalizedTHE QUICK BROWN FOX
lowercaseEvery letter lowercasedthe quick brown fox
Title CaseFirst letter of each word capitalizedThe Quick Brown Fox
Sentence caseFirst letter of each sentence capitalizedThe quick brown fox
camelCaseNo separators, first word lowercasetheQuickBrownFox
PascalCaseNo separators, every word capitalizedTheQuickBrownFox
snake_caseWords joined by underscores, all lowercasethe_quick_brown_fox
kebab-caseWords joined by hyphens, all lowercasethe-quick-brown-fox
CONSTANT_CASEWords joined by underscores, all uppercaseTHE_QUICK_BROWN_FOX

camelCase vs snake_case vs kebab-case

这三种命名规范在软件开发中最为普遍,但各自属于不同的生态系统。选错规范会导致 linter 报错、违反 API 约定,或产生不一致的代码库。

camelCase
JavaScript 和 TypeScript 变量、函数名及对象键的标准命名规范。Java 和 C# 也将其用于局部变量和方法参数。面向 JavaScript 客户端的 JSON API 通常使用 camelCase 键名。首词小写,后续每个单词首字母大写。
snake_case
Python(PEP 8)、Ruby、Rust 以及大多数 SQL 数据库的默认命名规范。C 标准库函数也遵循此模式。单词以下划线分隔,全部小写。CONSTANT_CASE(全大写加下划线)是其用于常量和环境变量的变体。
kebab-case
CSS 类名、HTML 属性、URL 别名和命令行参数(--output-dir)的标准命名规范。在 Lisp 和 Clojure 中也很常见。单词以连字符分隔,全部小写。由于大多数编程语言不允许在标识符中使用连字符,kebab-case 主要用于字符串、文件名和标记语言。

代码示例

如何通过编程方式在各命名规范之间转换。每段示例涵盖最常见的转换:camelCase 转 snake_case、snake_case 转 camelCase,以及基本的大写、小写和标题格式转换。

JavaScript
// camelCase → snake_case
function toSnakeCase(str) {
  return str
    .replace(/([a-z])([A-Z])/g, '$1_$2')
    .replace(/[\s-]+/g, '_')
    .toLowerCase()
}
toSnakeCase('myVariableName')  // → "my_variable_name"
toSnakeCase('kebab-case-str')  // → "kebab_case_str"

// snake_case → camelCase
function toCamelCase(str) {
  return str
    .toLowerCase()
    .replace(/[_-](\w)/g, (_, c) => c.toUpperCase())
}
toCamelCase('my_variable_name')  // → "myVariableName"

// Title Case
function toTitleCase(str) {
  return str.replace(/\w\S*/g, w =>
    w.charAt(0).toUpperCase() + w.slice(1).toLowerCase()
  )
}
toTitleCase('the quick brown fox')  // → "The Quick Brown Fox"
Python
import re

text = "the quick brown fox"

# UPPERCASE / lowercase
text.upper()  # → "THE QUICK BROWN FOX"
text.lower()  # → "the quick brown fox"

# Title Case
text.title()  # → "The Quick Brown Fox"

# camelCase
def to_camel(s):
    words = re.split(r'[\s_-]+', s)
    return words[0].lower() + ''.join(w.capitalize() for w in words[1:])

to_camel("my_variable_name")  # → "myVariableName"

# snake_case from camelCase
def to_snake(s):
    return re.sub(r'([a-z])([A-Z])', r'\1_\2', s).lower()

to_snake("myVariableName")  # → "my_variable_name"

# kebab-case
def to_kebab(s):
    return re.sub(r'([a-z])([A-Z])', r'\1-\2', s).replace('_', '-').lower()

to_kebab("myVariableName")  # → "my-variable-name"
Go
package main

import (
	"fmt"
	"regexp"
	"strings"
)

// camelCase → snake_case
func toSnake(s string) string {
	re := regexp.MustCompile("([a-z])([A-Z])")
	snake := re.ReplaceAllString(s, "${1}_${2}")
	return strings.ToLower(snake)
}

// snake_case → camelCase
func toCamel(s string) string {
	parts := strings.Split(strings.ToLower(s), "_")
	for i := 1; i < len(parts); i++ {
		parts[i] = strings.Title(parts[i])
	}
	return strings.Join(parts, "")
}

func main() {
	fmt.Println(toSnake("myVariableName"))  // → my_variable_name
	fmt.Println(toCamel("my_variable_name")) // → myVariableName
	fmt.Println(strings.ToUpper("hello"))    // → HELLO
	fmt.Println(strings.ToUpper("hello world")) // → HELLO WORLD
}
CLI (bash / sed)
# UPPERCASE
echo "hello world" | tr '[:lower:]' '[:upper:]'
# → HELLO WORLD

# lowercase
echo "HELLO WORLD" | tr '[:upper:]' '[:lower:]'
# → hello world

# camelCase → snake_case (using sed)
echo "myVariableName" | sed 's/\([a-z]\)\([A-Z]\)/\1_\2/g' | tr '[:upper:]' '[:lower:]'
# → my_variable_name

# snake_case → kebab-case
echo "my_variable_name" | tr '_' '-'
# → my-variable-name

常见问题

camelCase 和 PascalCase 有什么区别?
camelCase 以小写字母开头(myVariable),而 PascalCase 以大写字母开头(MyVariable)。在 JavaScript 中,camelCase 用于变量和函数,PascalCase 用于类名和 React 组件名。C# 将 PascalCase 用于公共方法和属性。两者唯一的结构差异在于第一个字符的大小写。
如何在 JavaScript 中将 camelCase 转换为 snake_case?
使用正则表达式在每个大写字母前插入下划线,然后将结果转换为小写:str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase()。此方法适用于标准 camelCase。对于包含连续大写字母的字符串(如 "XMLParser"),还需要额外的正则处理来正确分割连续大写序列。
为什么 Python 使用 snake_case 而不是 camelCase?
Python 官方风格指南 PEP 8(2001 年发布)为函数和变量选择了 snake_case,因为 Guido van Rossum 和核心团队认为其可读性更强。Binkley 等人(2009 年)的研究发现,在特定阅读任务中,程序员识别 snake_case 标识符的速度快于 camelCase。这一规范由 flake8 和 pylint 等 linter 强制执行。
Title Case 等同于将每个单词首字母大写吗?
简单的 Title Case 将每个单词的首字母大写,本工具采用此方式。正式的 Title Case(AP、Chicago、APA 等风格指南)有额外规则:冠词(a、an、the)、短连词(and、but、or)和短介词(in、on、at)保持小写,除非位于首位或末位。正式的标题大小写需要词典查询,而非单纯的字符级转换。
此工具能处理 Unicode 和非拉丁文字吗?
本工具使用 JavaScript 内置的 toUpperCase() 和 toLowerCase() 方法,这些方法遵循 Unicode 标准(第 3 章,第 3.13 节)定义的大小写规则。可正确处理带重音符号的字符(é 转 É)、德语字符 eszett(ss 转 SS)和希腊字母。但土耳其语等语言特有的规则(小写 i 应大写为带点的 İ,而非 I)取决于浏览器的语言设置,而非本工具本身。
CONSTANT_CASE 用于什么场景?
CONSTANT_CASE(也称为 SCREAMING_SNAKE_CASE)用于常量和环境变量。在 JavaScript 中:const MAX_RETRIES = 3。在 Python 中:MAX_RETRIES = 3(按惯例,因为 Python 没有真正的常量)。在 shell 脚本中:export DATABASE_URL=...。全大写风格表示该值在初始化后不应被重新赋值。
如何为项目选择正确的命名规范?
遵循所用语言和框架的主流规范。JavaScript/TypeScript:变量用 camelCase,类和组件用 PascalCase。Python:函数和变量用 snake_case,类用 PascalCase。CSS:kebab-case。SQL:列名和表名用 snake_case。REST API JSON 键:与前端语言保持一致(JS 客户端用 camelCase,Python 客户端用 snake_case)。如有疑问,请查看项目根目录中的 linter 配置或 .editorconfig 文件。