케이스 변환기
텍스트를 camelCase·snake_case 등으로 한 번에 변환
처리 중…
0.0
멈춘 것이 아닙니다. 계산이 끝나면 결과가 표시됩니다.
케이스 변환기 소개
이 도구는 입력을 먼저 「단어」로 쪼갠 뒤 9가지 표기로 다시 조립합니다. 쪼개는 규칙은 세 가지입니다. 소문자나 숫자 다음에 대문자가 오면 자르고(fooBar → foo Bar), 대문자 여러 개 뒤에 「대문자+소문자」가 오면 그 사이를 자르며(XMLHttp → XML Http), 글자·숫자가 아닌 것(공백, _, -, . 등)은 모두 구분자로 봅니다. 결과가 이상하게 나오면 거의 항상 이 단계에서 단어가 예상과 다르게 나뉜 경우입니다.
어떤 표기가 「맞는지」는 언어와 팀 규칙이 정합니다. 같은 XML HTTP request라도 Python, Java, Go, C#의 공식 가이드가 권하는 이름이 서로 다릅니다.
언어별 공식 가이드가 권하는 표기
식별자 표기(camelCase, PascalCase)에서 이 도구는 Java 방식처럼 약어도 첫 글자만 대문자로 만듭니다. 그래서 PascalCase 결과는 XmlHttpRequest가 되고, PEP 8이나 Go 규칙을 따르는 코드라면 약어 부분을 손으로 대문자로 되돌려야 합니다. 문장 표기(Title Case, Sentence case)에서는 두 글자 이상 대문자로 된 단어(XML, JSON, MP3)를 약어로 보고 그대로 둡니다. 다만 입력 전체가 대문자(HELLO WORLD, MAX_RETRY)면 약어와 구별할 수 없어 보통 단어처럼 바꿉니다.
- Python(PEP 8): 함수·변수는 snake_case, 클래스는 CapWords(PascalCase), 상수는 UPPER_CASE, 모듈은 짧은 소문자. 약어는 대문자를 유지하라고 해서 HTTPServerError가 HttpServerError보다 낫다고 적습니다.
- Java(Google Java Style Guide): 약어도 한 단어로 취급해 첫 글자만 대문자. XmlHttpRequest(O) / XMLHTTPRequest(X), newCustomerId(O) / newCustomerID(X).
- Go(Code Review Comments): 약어는 대소문자를 통일. URL 또는 url이지 Url은 안 되고, ServeHTTP, appID가 권장형입니다. 비공개 상수도 MAX_LENGTH가 아니라 maxLength입니다.
- C#/.NET(Framework Design Guidelines): 공개 멤버는 PascalCase, 매개변수는 camelCase, 밑줄 금지. 두 글자 약어는 둘 다 대문자(IOStream), 세 글자 이상은 첫 글자만(HtmlTag). Id, Ok처럼 약어가 아닌 줄임말은 한 단어로 봅니다.
- URL·CSS 클래스·파일 이름: kebab-case가 흔합니다. Google은 URL에서 단어를 밑줄 대신 하이픈으로 나누라고 권합니다.
쪼개기가 예상과 다른 경우
iPhone, iPad, iOS, macOS, eBay처럼 소문자로 시작해 대문자가 이어지는 널리 쓰이는 고유명사는 목록으로 알고 있어서 한 단어로 둡니다(snake_case는 iphone, camelCase는 iPhoneCase, Title Case는 iPhone Case). 목록에 없는 aValue 같은 이름은 규칙대로 a와 Value로 나뉩니다. 숫자 뒤 대문자도 경계라서 user_id2FA는 user, id2, FA로 나뉘어 camelCase가 userId2Fa가 됩니다. 반대로 숫자와 그 뒤 소문자는 붙어 있어 id2가 한 단어로 남습니다. 이런 이름은 공백을 넣어 「user id 2FA」처럼 입력하면 원하는 경계를 직접 줄 수 있습니다.
한글은 대소문자가 없어서 공백이나 기호로만 나뉩니다. 「한글 변수명」은 camelCase에서 그냥 한글변수명으로 붙습니다.
터키어 i와 독일어 ß
대소문자 변환은 언어마다 다릅니다. 터키어에는 점 있는 i/İ와 점 없는 ı/I가 따로 있어서, 터키어 규칙으로 I를 소문자로 바꾸면 ı가 됩니다. 언어 설정 없는 JavaScript 기본 toLowerCase는 İstanbul을 i 뒤에 결합용 점(U+0307)이 붙은 i̇stanbul로 바꿔, 변수명에 보이지 않는 글자가 섞입니다. 이 도구는 페이지 언어(한국어·영어·일본어·스페인어)가 터키어가 아니므로 İ를 점 없는 i로 내려 istanbul을 만듭니다. 대신 터키어 규칙(I → ı)은 적용하지 않아 DİYARBAKIR는 diyarbakir가 되고, ı를 대문자로 바꾸면 I가 됩니다. 터키어 문장을 다룬다면 결과를 확인하세요.
독일어 ß는 대문자로 바꾸면 SS 두 글자가 됩니다. STRASSE를 다시 소문자로 바꾸면 strasse가 되므로 원래 글자로 돌아오지 않습니다. 대소문자 변환이 항상 되돌릴 수 있는 변환은 아니라는 뜻입니다.
예시
약어가 든 식별자
- 입력
getHTTPResponseCode- 결과
camel: getHttpResponseCode / snake: get_http_response_code / constant: GET_HTTP_RESPONSE_CODE
HTTP는 약어 규칙(2번)으로 한 단어가 되고, Java 스타일로 Http가 됩니다. Go 코드라면 getHTTPResponseCode를 그대로 두는 편이 규칙에 맞습니다.
Title Case와 약어
- 입력
naïve JSON- 결과
title: Naïve JSON / pascal: NaïveJson / snake: naïve_json
Title Case는 JSON을 약어로 보고 대문자로 둡니다. PascalCase는 Java 방식대로 Json이 됩니다. ï 같은 발음 기호는 그대로 남습니다.
ß의 대문자
- 입력
straße größe- 결과
constant: STRASSE_GRÖSSE / camel: straßeGröße
대문자 표기에서만 ß가 SS로 바뀝니다.
사용 방법
- 변수명이나 문장을 입력합니다.
- 9가지 표기가 동시에 나오면 필요한 것을 복사합니다.
- 약어가 들어 있다면 쓰는 언어의 규칙에 맞게 대문자를 확인합니다.
자주 묻는 질문
camelCase와 PascalCase의 차이는?
첫 단어의 첫 글자만 다릅니다. userName은 camelCase, UserName은 PascalCase입니다. 대부분의 언어에서 PascalCase는 클래스·타입 이름에 씁니다.
JSON 키는 snake_case와 camelCase 중 무엇을 써야 하나요?
JSON 규격에는 정해진 것이 없습니다. JavaScript 쪽에서 바로 쓰는 API는 camelCase, Python·Ruby 기반 API는 snake_case가 흔합니다. 한 API 안에서 섞지 않는 것이 중요합니다.
XMLHttpRequest가 왜 xmlHttpRequest가 되나요?
대문자가 이어지다가 「대문자+소문자」가 나오는 지점을 새 단어의 시작으로 보기 때문에 XML / Http / Request로 나뉩니다. 이후 camelCase 규칙에 따라 첫 단어를 모두 소문자로 만듭니다.
상수 이름은 어떤 표기인가요?
C, Java, Python, JavaScript 등에서는 CONSTANT_CASE(대문자+밑줄)가 관례입니다. Go는 예외로, 상수도 MixedCaps를 씁니다.
출처
- PEP 8 — Style Guide for Python Code
- Google Java Style Guide — 5.3 Camel case
- Go Code Review Comments — Initialisms
- .NET Capitalization Conventions
- Unicode SpecialCasing.txt
기준일: