케이스 변환이 하는 일
이 도구의 변환은 두 종류로 나뉩니다. 첫째는 글자 자체의 대소문자를 바꾸는 변환(UPPERCASE, lowercase, Title Case, Sentence case, tOGGLE)으로, 문장 부호와 줄바꿈은 그대로 두고 알파벳의 크기만 바꿉니다. 둘째는단어를 분리해 하나의 식별자로 이어 붙이는 변환(camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, dot.case)으로, 공백·밑줄·하이픈·점 같은 구분 기호를 모두 단어 경계로 보고 새 규칙으로 다시 이어 붙입니다. 그래서 "user profile image URL"을 camelCase로 바꾸면 "userProfileImageUrl"이 되고, 그 결과를 다시 kebab-case로 바꿔도 "user-profile-image-url"이 나옵니다. 변환의 출발점이 어떤 표기법이든 상관없다는 점이 두 번째 종류의 장점입니다.
단어 경계를 찾는 규칙
코딩 표기법 변환의 품질은 "어디서 단어를 끊느냐"에서 갈립니다. 이 변환기는 다음 순서로 경계를 찾습니다.
- 소문자 또는 숫자 바로 뒤에 대문자가 오면 그 사이를 끊습니다. (userName → user Name, getUserID → get User ID)
- 연속된 대문자 뒤에 "대문자+소문자"가 오면 마지막 대문자 앞을 끊습니다. (HTMLParser → HTML Parser, XMLHttpRequest → XML Http Request)
- 글자와 숫자가 아닌 모든 문자(공백, _, -, ., 슬래시, 괄호 등)는 구분자로 취급해 버립니다.
두 번째 규칙 덕분에 약어가 포함된 이름이 뭉개지지 않습니다. 아래 표는 실제 변환 함수에 샘플을 넣어 계산한 결과입니다. 모든 행은 같은 단어 목록에서 출발했으므로 열을 가로질러 비교해 볼 수 있습니다.
| 입력 | camelCase | PascalCase | snake_case | CONSTANT_CASE | kebab-case | dot.case |
|---|---|---|---|---|---|---|
| user profile image URL | userProfileImageUrl | UserProfileImageUrl | user_profile_image_url | USER_PROFILE_IMAGE_URL | user-profile-image-url | user.profile.image.url |
| HTMLParser | htmlParser | HtmlParser | html_parser | HTML_PARSER | html-parser | html.parser |
| getUserID2 | getUserId2 | GetUserId2 | get_user_id2 | GET_USER_ID2 | get-user-id2 | get.user.id2 |
| order-total_price | orderTotalPrice | OrderTotalPrice | order_total_price | ORDER_TOTAL_PRICE | order-total-price | order.total.price |
| XMLHttpRequest | xmlHttpRequest | XmlHttpRequest | xml_http_request | XML_HTTP_REQUEST | xml-http-request | xml.http.request |
표의 "getUserID2"에서 보이듯 숫자는 앞 글자에 붙은 채로 유지됩니다("ID2"가 한 덩어리). 숫자와 글자 사이에서도 끊고 싶다면 변환 전에 입력에 공백을 넣어 주세요. 한 가지 한계도 있습니다. 변환기는 사전을 갖고 있지 않으므로 "newyork"처럼 소문자로 붙어 있는 단어는 둘로 나누지 못합니다. 단어 경계 신호(공백, 구분 기호, 대문자 전환)가 있어야 분리됩니다.
어떤 표기법을 언제 쓰나요?
표기법은 취향이 아니라 언어와 도구의 관례입니다. 관례를 어기면 동작은 하더라도 코드 리뷰나 린터에서 지적을 받고, 일부 환경에서는 실제로 문제가 됩니다.
- camelCase: 자바스크립트·타입스크립트, 자바, 스위프트 등의 변수·함수·메서드 이름. JSON 키에도 흔합니다.
- PascalCase: 클래스·타입·React/Astro 같은 컴포넌트 이름, C#의 메서드 이름. Go에서는 첫 글자가 대문자여야 패키지 밖으로 공개(exported)됩니다.
- snake_case: 파이썬(PEP 8)의 함수·변수, 러스트의 함수·변수, 많은 데이터베이스의 테이블·컬럼 이름.
- CONSTANT_CASE(UPPER_SNAKE_CASE): 상수와 환경 변수 이름.
DATABASE_URL처럼 쉘 환경에서 관례적으로 대문자를 씁니다. - kebab-case: URL 경로, CSS 클래스·커스텀 프로퍼티, HTML 속성, 파일 이름. 하이픈은 URL에서 단어 구분자로 안전하게 쓰입니다. 대부분의 프로그래밍 언어는 식별자에 하이픈을 쓸 수 없습니다(빼기 연산자로 읽힘).
- dot.case: 설정 키(
server.port), 패키지·네임스페이스 경로, 로그 이벤트 이름. - Title Case / Sentence case: 글 제목, 목차, 버튼·메뉴 문구. 영어 매체는 스타일 가이드마다 규칙이 다르므로 아래 설명을 참고하세요.
Title Case와 Sentence case의 실제 규칙
Title Case는 각 단어의 첫 글자를 대문자로 바꾸되, 관례적으로 관사(a, an, the), 등위 접속사(and, but, or), 짧은 전치사(of, in, on, at, to, by, for)는 소문자로 둡니다. 다만 첫 단어와 마지막 단어는 항상 대문자로 씁니다. 이 변환기는 "작은 단어 소문자 유지" 옵션을 켜 두면 첫 단어를 제외한 위 목록의 단어를 소문자로 남기고, 끄면 모든 단어를 대문자로 시작시킵니다. APA, AP, Chicago 등 스타일 가이드마다 "4글자 이상 전치사를 대문자로 쓰는가" 같은 세부 규칙이 달라서 완벽히 일치시킬 수는 없으므로 제출용 제목이라면 해당 기관의 가이드를 한 번 더 대조하세요.
Sentence case는 문장의 첫 글자만 대문자로 하고 나머지는 소문자로 바꿉니다. 마침표·물음표·느낌표 뒤와 새 줄의 시작도 문장의 시작으로 봅니다. 주의할 점은 고유명사와 약어까지 소문자로 바뀐다는 것입니다. "Seoul is in KOREA."를 변환하면 "Seoul is in korea."가 되므로, 변환 후 고유명사(Korea, NASA, iPhone 등)는 직접 되살려 주어야 합니다.
검산해 본 변환 예시
예시 1. "user profile image URL"을 snake_case로 바꾸면 공백 3개를 구분자로 삼아 단어 4개(user, profile, image, URL)로 나눈 뒤 모두 소문자로 이어 붙여 user_profile_image_url이 됩니다. 같은 입력을 CONSTANT_CASE로 바꾸면USER_PROFILE_IMAGE_URL입니다.
예시 2. "HTMLParser"는 규칙 2에 따라 "HTML"과 "Parser"로 갈라집니다. 이를 snake_case로 바꾸면 html_parser, kebab-case로 바꾸면 html-parser입니다. 만약 약어 규칙이 없는 단순 변환기였다면 "h_t_m_l_parser"처럼 글자마다 끊거나 "htmlparser"로 붙여 버렸을 것입니다. 또 camelCase로 바꾸면 htmlParser가 되어, 약어가 첫 단어일 때는 전체 소문자로 쓰는 일반 관례와 일치합니다.
대소문자 변환에서 놓치기 쉬운 언어별 예외
글자 하나가 대문자로 바뀌면 반드시 글자 하나가 나올 거라는 가정은 영어 밖에서는 틀립니다. 이 변환기는 브라우저의 표준 유니코드 대소문자 규칙을 쓰며, 다음은 실제로 계산한 결과입니다.
| 입력 | 변환 결과 | 설명 |
|---|---|---|
| straße | STRASSE | 독일어 ß는 대문자로 바뀌면 SS 두 글자가 됩니다 (글자 수 증가). |
| İstanbul | i̇stanbul | 터키어 İ(점 있는 대문자 I)를 소문자로 바꾸면 i와 결합 점 기호가 합쳐진 형태가 됩니다. |
| dž | DŽ | 크로아티아어 등에서 쓰는 합자는 전용 대문자 글자로 바뀝니다. |
한글, 한자, 일본어 가나, 숫자, 기호에는 대소문자 개념이 없으므로 그대로 유지됩니다. 따라서 한글이 섞인 문장에 대문자 변환을 해도 영문 부분만 바뀝니다. 코딩 표기법 변환은 한글 단어도 구분자 기준으로 분리해 이어 붙이지만(예: "회원 정보 수정" → 회원_정보_수정), 한글 식별자는 팀 규칙이나 언어 환경에 따라 허용되지 않을 수 있으니 실제 사용 전에 확인하세요.
여러 줄을 한꺼번에 바꿀 때
목록으로 된 컬럼 이름 20개를 한 번에 snake_case로 바꾸는 식의 작업이 흔합니다. "코딩 표기법은 줄마다 따로 변환"을 켜 두면 각 줄이 독립된 식별자로 취급되어 줄 수가 유지됩니다. 끄면 전체 텍스트를 하나의 식별자로 합치기 때문에 줄바꿈도 구분자로 사라집니다. 대소문자 변환(UPPERCASE, lowercase, Title Case, Sentence case, tOGGLE)은 항상 줄바꿈과 문장 부호를 그대로 보존합니다.
흔한 실수와 오해
- 변환은 되돌릴 수 있다는 착각: "XMLHttpRequest"를 snake_case("xml_http_request")로 바꾼 뒤 다시 camelCase로 돌리면 "xmlHttpRequest"가 되어 원래의 약어 대문자(XML)는 복원되지 않습니다. 변환 전 원문은 따로 보관하세요.
- API·DB 이름을 일괄 변환한 뒤 그대로 반영: JSON 키나 컬럼 이름을 바꾸면 서버·클라이언트·쿼리 모두에 영향이 갑니다. 이름만 바꾸는 것으로 끝나지 않으므로 호환성을 먼저 확인하세요.
- URL 슬러그에 snake_case 사용: 검색엔진은 하이픈을 단어 구분으로 안내하는 경우가 많아 URL에는 kebab-case가 일반적으로 권장됩니다. 한글 URL의 슬러그 규칙은 한글 URL 슬러그 생성기에서 다룹니다.
- Title Case를 한글 제목에 적용: 한글에는 대소문자가 없으므로 효과가 없습니다. 영어 약어가 섞인 한글 제목이라면 영어 부분만 직접 점검하세요.
이 도구가 적합하지 않은 경우
소스 코드 전체의 식별자를 한 번에 바꾸는 리팩터링(변수 참조까지 함께 변경)은 IDE의 이름 바꾸기 기능이 필요합니다. 이 도구는 텍스트만 바꿀 뿐 코드의 의미를 이해하지 못합니다. 또한 영어 문법에 맞는 완벽한 제목 대소문자 교정, 고유명사 자동 인식은 지원하지 않습니다.
변환한 뒤 이어서 할 일
엑셀에서 같은 작업을 하려면 UPPER, LOWER, PROPER 함수를 쓰며, 사용법은 엑셀 대소문자 변환 함수 가이드에 정리돼 있습니다. 비슷한 변환 도구로 텍스트 케이스 변환기(버튼형)도 있습니다. 변환한 줄 앞뒤에 따옴표나 쉼표를 붙여 배열·SQL 목록으로 만들려면 줄 머리말·꼬리말 붙이기를, 바꾼 이름이 원본과 어디가 달라졌는지 확인하려면 텍스트 비교 도구를 이어서 쓰세요.
자주 묻는 질문
한글도 변환되나요?
대문자/소문자 변환은 영문에만 의미가 있어 한글에는 적용되지 않습니다. camelCase, snake_case 등은 단어를 구분해 이어붙이는 방식이라 한글 문장에도 적용은 되지만, 원래 영문 코드 작성 관례를 위해 만들어진 표기법입니다.
입력한 텍스트가 저장되나요?
아니요. 모든 변환은 브라우저 안에서만 처리됩니다.
camelCase와 PascalCase는 어떻게 다른가요?
둘 다 단어 사이 구분자 없이 단어마다 대문자로 시작한다는 점은 같고, 첫 글자만 다릅니다. camelCase는 첫 단어를 소문자로(userName), PascalCase는 첫 단어도 대문자로(UserName) 씁니다. 변수·함수에는 camelCase, 클래스·타입·컴포넌트에는 PascalCase를 쓰는 언어가 많습니다.
HTMLParser가 h_t_m_l_parser가 되지 않고 html_parser가 되는 이유는 무엇인가요?
연속된 대문자 뒤에 대문자+소문자가 이어지는 지점(L과 P 사이)을 약어와 다음 단어의 경계로 인식하기 때문입니다. HTML이 하나의 단어로 처리되어 html_parser, html-parser처럼 자연스러운 결과가 나옵니다.
숫자가 들어 있는 이름은 어떻게 처리되나요?
숫자는 인접한 글자와 한 덩어리로 유지됩니다. 예를 들어 "version2 update"는 snake_case에서 "version2_update"가 됩니다. 숫자 앞뒤로 구분하고 싶다면 입력에서 공백을 넣어 주세요.
줄바꿈이 사라지거나 문장 부호가 지워져요.
코딩 표기법(camel, snake 등)은 글자·숫자가 아닌 모든 문자를 구분자로 취급해 버리는 것이 정상 동작입니다. 줄바꿈을 유지하려면 "줄마다 따로 변환"을 켜세요. 문장 부호를 유지하려면 UPPERCASE, lowercase, Title Case, Sentence case를 사용하세요.