大小写转换器
在大写、小写、标题格式、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 扩展或编写临时脚本。
大小写转换工具使用场景
命名规范参考
每种命名规范对大写和单词分隔都有其特定规则。下表展示本工具支持的全部九种格式,以 "the quick brown fox" 为参考输入。
| 格式 | 规则 | 示例 |
|---|---|---|
| UPPERCASE | Every letter capitalized | THE QUICK BROWN FOX |
| lowercase | Every letter lowercased | the quick brown fox |
| Title Case | First letter of each word capitalized | The Quick Brown Fox |
| Sentence case | First letter of each sentence capitalized | The quick brown fox |
| camelCase | No separators, first word lowercase | theQuickBrownFox |
| PascalCase | No separators, every word capitalized | TheQuickBrownFox |
| snake_case | Words joined by underscores, all lowercase | the_quick_brown_fox |
| kebab-case | Words joined by hyphens, all lowercase | the-quick-brown-fox |
| CONSTANT_CASE | Words joined by underscores, all uppercase | THE_QUICK_BROWN_FOX |
camelCase vs snake_case vs kebab-case
这三种命名规范在软件开发中最为普遍,但各自属于不同的生态系统。选错规范会导致 linter 报错、违反 API 约定,或产生不一致的代码库。
代码示例
如何通过编程方式在各命名规范之间转换。每段示例涵盖最常见的转换:camelCase 转 snake_case、snake_case 转 camelCase,以及基本的大写、小写和标题格式转换。
// 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"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"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
}# 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