Chuyển đổi kiểu chữ là gì?
Chuyển đổi kiểu chữ nhận một chuỗi đầu vào và phát ra cùng các từ được render theo một quy ước viết hoa khác. Các mục tiêu phổ biến nhất là camelCase và PascalCase (dùng cho định danh trong hầu hết ngôn ngữ curly-brace), snake_case và CONSTANT_CASE (Python, Ruby, Rust, C macro), kebab-case (URL, tên class CSS, thuộc tính HTML, tên gói npm), dot.case (khoá cấu hình, đường dẫn đối tượng JavaScript), path/case (định danh kiểu filesystem), Title Case và Sentence case (tiêu đề và văn xuôi), cộng với lower case và UPPER CASE đầy đủ. Bộ chuyển đổi này phát hiện ranh giới từ tự nhiên trong đầu vào của bạn — khoảng trắng, dấu gạch nối, dấu gạch dưới, dấu chấm, dấu gạch chéo và các bước chuyển lowercase→uppercase đánh dấu các định danh kiểu helloWorld — rồi ráp lại chúng với dấu phân cách và mẫu viết hoa mà mỗi kiểu mục tiêu yêu cầu.
Chuyển đổi kiểu chữ hoạt động như thế nào?
Đầu vào của bạn được xử lý hoàn toàn trong trình duyệt bằng một tokeniser vanilla JavaScript nhỏ và mười một bộ định dạng kiểu chữ. Các bước cấp cao là:
- Đầu vào của bạn được đọc nguyên văn từ textarea — mỗi byte bạn dán đều giữ trong bộ nhớ cục bộ.
- Một tokeniser tách đầu vào tại khoảng trắng, dấu gạch dưới, dấu gạch nối, dấu chấm và dấu gạch chéo, rồi tách tiếp mỗi mảnh tại ranh giới lowercase→uppercase (nên
helloWorldtrở thành["hello", "World"]) và ranh giới chữ cái↔chữ số (nênv2APItrở thành["v", "2", "API"]). - Các token rỗng bị lọc bỏ và các token còn lại được chuyển về chữ thường bằng
String.prototype.toLocaleLowerCaseđể các chữ cái Unicode trong tiếng Thổ Nhĩ Kỳ, Đức và các locale khác được giữ đúng. - Sau đó mười một bộ định dạng lần lượt ghép các token thành mỗi kiểu mục tiêu — camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, dot.case, path/case, Title Case (với danh sách small-words để
and,the,ofv.v. giữ chữ thường trừ khi là từ đầu hoặc cuối), Sentence case, lower case đầy đủ và UPPER CASE đầy đủ. - Đầu ra được viết một hàng cho mỗi kiểu trong lưới kết quả; mỗi hàng có nút sao chép riêng, dùng Clipboard API bất đồng bộ với fallback đồng bộ
document.execCommand('copy')cho trình duyệt cũ.
Tại sao dùng bộ chuyển đổi kiểu chữ?
- Refactor định danh: đổi tên biến JavaScript từ
user_idthànhuserId, hàm Python từhelloWorldthànhhello_world, hoặc hằng số Rust từmaxBufferthànhMAX_BUFFERmà không phải sửa từng ký tự bằng tay. - Chuyển khoá cấu hình: lật một JSON config đầy khoá camelCase sang snake_case YAML cho service Python, hoặc sang kebab-case cho Helm chart, chỉ trong một lần dán.
- Viết tiêu đề: dán một bản nháp tiêu đề và đọc lại dạng Title Case (với ngoại lệ small-words theo Chicago Manual of Style) cạnh dạng Sentence case (AP Stylebook) — chọn quy ước nào ấn phẩm của bạn dùng.
- Sinh slug URL: dán tiêu đề bài blog và sao chép dạng kebab-case thẳng vào trường slug của CMS — tokeniser xử lý dấu câu và cụm nhiều từ mà không để lại dấu phân cách thừa.
Các ứng dụng phổ biến của chuyển đổi kiểu chữ?
Chuyển qua lại giữa các quy ước viết hoa xuất hiện trong kỹ thuật phần mềm, biên tập nội dung và kỹ thuật dữ liệu:
- Refactor mã: đổi tên định danh khắp codebase khi style guide thay đổi (ví dụ JavaScript camelCase → Python snake_case khi rewrite backend) mà không gây lỗi chính tả.
- Định hình lại payload API: chuyển khoá JSON camelCase sang snake_case trước khi feed vào backend Ruby on Rails hoặc Django, hoặc sang kebab-case cho tên class CSS-in-JS.
- Biên tập tiêu đề và slug: tạo tiêu đề trang Title Case, meta description Sentence case và slug URL kebab-case từ cùng một tiêu đề nguồn trong một bước.
Ví dụ về chuyển đổi kiểu chữ trông như thế nào?
Dán Hello World API vào ô đầu vào. Lưới kết quả render đồng thời mười một hàng: 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), và HELLO WORLD API (UPPER CASE). Cùng đầu vào dán dưới dạng helloWorldAPI cũng tách thành ba từ giống vậy — bộ phát hiện ranh giới lowercase→uppercase xử lý cả hình thức đó.
Công cụ này có chạy trong trình duyệt của tôi không?
Có. Tokeniser và mười một bộ định dạng kiểu chữ là khoảng 120 dòng JavaScript vanilla chạy bên trong tab trình duyệt. Không có gì được tải lên, không service worker proxy đầu vào của bạn, và trang không thực hiện yêu cầu mạng nào cho bước chuyển đổi. Lưu lượng đi ra duy nhất là các tài sản tải trang chuẩn (CSS, font, analytics) — văn bản của bạn không bao giờ đến Ultim8Soft.
Nên dùng kiểu chữ nào cho tên biến?
Tuỳ ngôn ngữ và style guide của đội. Codebase JavaScript và TypeScript áp đảo dùng camelCase cho biến và hàm, PascalCase cho class và React component, và CONSTANT_CASE cho tên biến môi trường và hằng số cấp module — Google JavaScript style guide và Airbnb style guide đều chốt các lựa chọn này. Python (PEP 8), Ruby và Rust thích snake_case cho biến và hàm, PascalCase cho class, và CONSTANT_CASE cho hằng số cấp module. Codebase C và C++ (Linux kernel, LLVM) nghiêng về snake_case cho hàm và CONSTANT_CASE cho macro tiền xử lý. Khi không chắc, hãy chạy linter hoặc formatter của đội — nó sẽ cho bạn biết quy ước nào được áp đặt.
Đầu vào được tokenise như thế nào?
Tokeniser trước hết tách đầu vào tại bất kỳ run nào của khoảng trắng, dấu gạch dưới (_), dấu gạch nối (-), dấu chấm (.) hoặc dấu gạch chéo (/). Mỗi mảnh kết quả sau đó được tách lại tại ranh giới lowercase→uppercase (nên helloWorld trở thành ["hello", "World"]) và ranh giới chữ cái↔chữ số (nên v2API trở thành ["v", "2", "API"]). Các token rỗng bị lọc bỏ, và các token còn lại được chuyển về chữ thường qua String.prototype.toLocaleLowerCase. Sau đó các bộ định dạng viết hoa lại và nối lại token với dấu phân cách mà mỗi kiểu mục tiêu yêu cầu. Chiến lược xử lý sáu hình thức định danh phổ biến — camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE và văn xuôi phân tách bằng khoảng trắng đơn thuần — sẵn sàng ngay.
Còn ký tự Unicode / non-ASCII thì sao?
Chữ cái Unicode sống sót qua round trip. Tokeniser dùng String.prototype.toLocaleLowerCase và toLocaleUpperCase, tôn trọng quy tắc viết hoa theo locale — chữ i có dấu/không dấu trong tiếng Thổ Nhĩ Kỳ, ß tiếng Đức viết hoa thành SS, các chữ Latin có dấu trong tiếng Pháp và Tây Ban Nha, v.v. Các ký tự không phải chữ cái KHÔNG nằm trong tập dấu phân cách (khoảng trắng, _, -, ., /) — ví dụ chữ số, chữ có dấu hoặc ký tự CJK — được giữ bên trong token mà chúng xuất hiện và các bộ định dạng kiểu chữ phát lại chúng nguyên văn. Nghĩa là đầu vào như nœud_principal tokenise thành ["nœud", "principal"] và chuyển sạch sẽ thành nœudPrincipal (camelCase) hoặc NœudPrincipal (PascalCase).
Bộ chuyển đổi này là một trang tĩnh duy nhất chạy tokeniser và mười một bộ định dạng hoàn toàn trong trình duyệt của bạn — không thư viện vendor, không cuộc gọi mạng cho mỗi lần chuyển, không tài khoản. Dán bất kỳ văn bản nào ở trên, quét mười một đầu ra cạnh nhau và sao chép cái bạn cần.