Công cụ chuyển đổi kiểu chữ

Chuyển đổi văn bản giữa uppercase, lowercase, title case, camelCase, snake_case và nhiều định dạng khác

Thử ví dụ

Đầu vào

Đầu ra

Chạy cục bộ · An toàn để dán thông tin bí mật
Văn bản đã chuyển đổi sẽ hiển thị ở đây…

Chuyển đổi kiểu chữ là gì?

Chuyển đổi kiểu chữ là quá trình thay đổi cách viết hoa/viết thường hoặc quy tắc phân tách từ trong một chuỗi. Một công cụ chuyển đổi kiểu chữ nhận đầu vào như "hello world" và biến đổi thành UPPERCASE, lowercase, Title Case, camelCase, snake_case, kebab-case hoặc các quy ước khác. Quá trình chuyển đổi đơn giản với văn bản ASCII thuần túy, nhưng xuất hiện các trường hợp đặc biệt với từ viết tắt ("XMLParser"), quy tắc riêng theo ngôn ngữ (chữ I có dấu chấm trong tiếng Thổ Nhĩ Kỳ) và chuỗi ký tự nhiều ngôn ngữ.

Các ngôn ngữ lập trình, hệ thống tệp và quy chuẩn viết code đều áp dụng quy ước đặt tên riêng. Biến trong JavaScript thường dùng camelCase. Hàm và biến trong Python tuân theo snake_case theo PEP 8. Tên class CSS dùng kebab-case. Cột cơ sở dữ liệu khác nhau tùy nhóm, nhưng snake_case chiếm ưu thế trong PostgreSQL và MySQL. Chuyển đổi thủ công giữa các quy ước này chậm và dễ mắc lỗi, đặc biệt khi đổi tên trên hàng chục tệp.

Quy ước kiểu chữ cũng quan trọng ngoài phạm vi code. Title Case tuân theo quy tắc của các cẩm nang phong cách như Chicago Manual of Style và APA, trong đó mạo từ và giới từ ngắn được viết thường trừ khi đứng đầu câu. Sentence case chỉ viết hoa chữ đầu câu và danh từ riêng. Xuất bản Anh-Mỹ mặc định dùng Title Case cho tiêu đề; phần lớn tài liệu kỹ thuật châu Âu dùng Sentence case.

Tại sao dùng công cụ chuyển đổi kiểu chữ này?

Dán bất kỳ đoạn văn bản nào và chuyển đổi ngay lập tức giữa chín định dạng kiểu chữ, không cần cài extension VS Code hay viết script dùng một lần.

Chuyển đổi tức thì
Chọn định dạng kiểu chữ và xem kết quả ngay. Không cần gửi yêu cầu đến máy chủ, không cần chờ đợi. Chuyển đổi qua lại giữa các định dạng để so sánh đầu ra.
🔒
Xử lý ưu tiên quyền riêng tư
Toàn bộ quá trình chuyển đổi chạy trong trình duyệt bằng JavaScript. Văn bản của bạn ở lại trên thiết bị. Không có dữ liệu nào được gửi đến máy chủ hay lưu ở bất kỳ đâu.
🔄
Chín định dạng trong một công cụ
UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case và CONSTANT_CASE. Một đầu vào bao gồm tất cả các quy ước phổ biến.
🌍
Không cần tài khoản
Mở trang và bắt đầu chuyển đổi ngay. Không cần đăng ký, không cần extension trình duyệt, không cần cài đặt trên máy. Hoạt động trên mọi thiết bị có trình duyệt hiện đại.

Các trường hợp sử dụng

Phát triển Frontend
Chuyển đổi tên prop từ phản hồi API dạng snake_case sang camelCase cho các đối tượng JavaScript. Đổi tên class CSS từ camelCase sang kebab-case khi chuyển sang hệ thống đặt tên BEM hoặc utility-first.
Thiết kế Backend API
Chuyển đổi tên trường giữa các quy ước khi ánh xạ cột cơ sở dữ liệu (snake_case) sang khóa phản hồi JSON (camelCase). Kiểm tra xem lớp tuần tự hóa có tạo ra định dạng đầu ra đúng hay không.
DevOps và Hạ tầng
Tạo tên biến môi trường dạng CONSTANT_CASE từ các cụm từ mô tả. Chuyển đổi tên tài nguyên Terraform giữa snake_case và kebab-case khi đồng bộ với quy chuẩn nhóm.
QA và Kiểm thử tự động
Chuẩn bị dữ liệu fixture kiểm thử với tên trường đúng kiểu chữ. Phát hiện sự không khớp về kiểu chữ giữa hợp đồng API và kỳ vọng phía client trước khi đưa lên môi trường production.
Kỹ thuật dữ liệu
Chuẩn hóa tiêu đề cột khi nhập tệp CSV hoặc Excel vào cơ sở dữ liệu. Chuyển đổi tiêu đề hỗn hợp như "First Name" thành cột snake_case như "first_name" để thiết kế schema nhất quán.
Viết tài liệu kỹ thuật
Định dạng tham chiếu code trong tài liệu với kiểu chữ đúng chuẩn. Chuyển đổi mô tả tiếng Anh thuần thành tên class dạng PascalCase hoặc URL slug dạng kebab-case để đảm bảo nhất quán trong đặc tả kỹ thuật.

Bảng tham chiếu quy ước kiểu chữ

Mỗi quy ước đặt tên có quy tắc riêng về viết hoa và phân tách từ. Bảng dưới đây hiển thị chín định dạng mà công cụ này hỗ trợ, với cụm từ đầu vào "the quick brown fox" làm ví dụ tham chiếu.

Kiểu chữQuy tắcVí dụ
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

Ba quy ước này chiếm ưu thế trong phát triển phần mềm, nhưng mỗi quy ước thuộc về một hệ sinh thái khác nhau. Chọn sai quy ước sẽ làm hỏng linter, vi phạm hợp đồng API hoặc tạo ra codebase không nhất quán.

camelCase
Chuẩn cho biến, tên hàm và khóa đối tượng trong JavaScript và TypeScript. Java và C# dùng cho biến cục bộ và tham số phương thức. JSON API xây dựng cho client JavaScript thường dùng khóa camelCase. Từ đầu tiên viết thường; mỗi từ tiếp theo bắt đầu bằng chữ hoa.
snake_case
Mặc định cho Python (PEP 8), Ruby, Rust và hầu hết các cơ sở dữ liệu SQL. Hàm trong thư viện chuẩn C cũng tuân theo quy tắc này. Các từ phân tách bằng dấu gạch dưới, tất cả viết thường. CONSTANT_CASE (toàn chữ hoa với dấu gạch dưới) là biến thể dùng cho hằng số và biến môi trường.
kebab-case
Chuẩn cho tên class CSS, thuộc tính HTML, URL slug và tên cờ CLI (--output-dir). Phổ biến trong Lisp và Clojure. Các từ phân tách bằng dấu gạch ngang, tất cả viết thường. Hầu hết các ngôn ngữ lập trình không dùng dấu gạch ngang trong định danh, nên kebab-case chỉ dùng cho chuỗi, tên tệp và markup.

Ví dụ code

Cách chuyển đổi giữa các quy ước kiểu chữ theo lập trình. Mỗi ví dụ bao gồm các phép chuyển đổi phổ biến nhất: camelCase sang snake_case, snake_case sang camelCase và các phép chuyển đổi upper/lower/title cơ bản.

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

Câu hỏi thường gặp

Sự khác biệt giữa camelCase và PascalCase là gì?
camelCase bắt đầu bằng chữ thường (myVariable), trong khi PascalCase bắt đầu bằng chữ hoa (MyVariable). Trong JavaScript, camelCase dùng cho biến và hàm; PascalCase dùng cho tên class và tên component React. C# dùng PascalCase cho phương thức và thuộc tính public. Sự khác biệt duy nhất về cấu trúc là ký tự đầu tiên.
Làm thế nào để chuyển đổi camelCase sang snake_case trong JavaScript?
Chèn dấu gạch dưới trước mỗi chữ hoa bằng regex rồi chuyển toàn bộ thành chữ thường: str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase(). Cách này xử lý camelCase thông thường. Với chuỗi có nhiều chữ hoa liên tiếp như "XMLParser", bạn cần thêm một lần xử lý regex để tách đúng các đoạn chữ hoa.
Tại sao Python dùng snake_case thay vì camelCase?
PEP 8, hướng dẫn phong cách chính thức của Python được công bố năm 2001, đã chọn snake_case cho hàm và biến vì Guido van Rossum và nhóm cốt lõi cho rằng nó dễ đọc hơn khi nhìn lướt qua. Nghiên cứu của Binkley và cộng sự (2009) cho thấy định danh dạng snake_case được lập trình viên nhận ra nhanh hơn camelCase trong một số tác vụ đọc nhất định. Quy ước này được áp dụng bởi các linter như flake8 và pylint.
Title Case có giống với việc viết hoa mọi từ không?
Title Case đơn giản viết hoa chữ cái đầu của mỗi từ, và đó là những gì công cụ này thực hiện. Title Case chính thức (AP, Chicago, APA) có thêm quy tắc: mạo từ (a, an, the), liên từ ngắn (and, but, or) và giới từ ngắn (in, on, at) được viết thường trừ khi là từ đầu hoặc cuối câu. Viết Title Case chính thức yêu cầu tra cứu từ điển, không chỉ đơn giản là chuyển đổi ký tự.
Công cụ này có xử lý được Unicode và các ký tự không phải Latin không?
Công cụ dùng các phương thức toUpperCase() và toLowerCase() tích hợp sẵn của JavaScript, tuân theo quy tắc viết hoa Unicode được định nghĩa trong Tiêu chuẩn Unicode (Chương 3, Mục 3.13). Điều này xử lý đúng các ký tự có dấu (e thành E), chữ eszett của Đức (ss thành SS) và chữ cái Hy Lạp. Tuy nhiên, các quy tắc riêng theo ngôn ngữ như viết hoa trong tiếng Thổ Nhĩ Kỳ (chữ i thường phải thành İ có dấu chấm, không phải I) phụ thuộc vào cài đặt ngôn ngữ của trình duyệt, không phải công cụ này.
CONSTANT_CASE dùng để làm gì?
CONSTANT_CASE (còn gọi là SCREAMING_SNAKE_CASE) dùng cho hằng số và biến môi trường. Trong JavaScript: const MAX_RETRIES = 3. Trong Python: MAX_RETRIES = 3 (theo quy ước, vì Python không có hằng số thực sự). Trong shell script: export DATABASE_URL=.... Kiểu toàn chữ hoa báo hiệu rằng giá trị không nên được gán lại sau khi khởi tạo.
Làm thế nào để chọn quy ước kiểu chữ phù hợp cho dự án của mình?
Tuân theo quy ước chủ đạo của ngôn ngữ và framework bạn đang dùng. JavaScript/TypeScript: camelCase cho biến, PascalCase cho class và component. Python: snake_case cho hàm và biến, PascalCase cho class. CSS: kebab-case. SQL: snake_case cho cột và bảng. Khóa JSON trong REST API: khớp với ngôn ngữ frontend của bạn (camelCase cho client JS, snake_case cho client Python). Khi không chắc, kiểm tra cấu hình linter hoặc .editorconfig trong thư mục gốc của dự án.