케이스 변환기

camelCase / PascalCase / snake_case / kebab-case / CONSTANT_CASE / Title Case를 서로 변환합니다.

Loading…

모든 처리는 브라우저 내부에서 실행됩니다 — 파일·입력은 서버로 전송되지 않습니다.

사용법

`userId`·`user_id`·`user-id`·`USER_ID`·`user id` 같은 임의의 식별자를 붙여 넣으면 9가지 케이스 변환이 동시에 표시됩니다. 토크나이저는 먼저 입력을 camelCase 경계(`userId` → `user`·`Id`)와 명시 구분자(`-` `_` `.` `/` 및 공백)로 분리한 뒤, 선택한 스타일로 토큰을 다시 결합합니다. 연속된 대문자는 한 토큰으로 묶이므로 `HTTPRequest`는 `h`·`t`·`t`·`p`·`request`가 아니라 `http` + `request`가 됩니다.

언어별 관례를 가로지를 때 사용하세요. Python의 `snake_case` 변수를 JavaScript의 `camelCase`로 바꾸기, 데이터베이스 컬럼(`snake_case`)에서 TypeScript 타입명(`PascalCase`) 생성하기, 상수(`MAX_RETRIES`)를 CSS 변수(`max-retries`)로 바꾸기, 제목에서 URL 슬러그 만들기 같은 용도입니다. 처리는 브라우저 안에서 이루어지며 토크나이저가 정규식 1 패스만 사용하므로 긴 식별자 리스트도 즉시 처리됩니다.

예제

언어 관례 간 변환

입력
user_profile_image_url
출력
camelCase:     userProfileImageUrl
PascalCase:    UserProfileImageUrl
snake_case:    user_profile_image_url
kebab-case:    user-profile-image-url
CONSTANT_CASE: USER_PROFILE_IMAGE_URL
Title Case:    User Profile Image Url

Python의 `snake_case` 필드명은 JavaScript의 `camelCase`(`userProfileImageUrl`), CSS 변수의 `kebab-case`(`--user-profile-image-url`), TypeScript의 타입 `PascalCase`(`UserProfileImageUrl`)로 깔끔하게 매핑됩니다. Title Case는 URL 관례(`Url` 대신 `URL`)를 잃습니다. 약어 처리는 다음 예시를 보세요.

약어 처리

입력
HTTPRequestHandler
출력
camelCase:     httpRequestHandler
PascalCase:    HttpRequestHandler
snake_case:    http_request_handler
kebab-case:    http-request-handler

연속된 대문자는 한 토큰으로 묶이므로 `HTTPRequestHandler`는 글자 단위가 아니라 `http`·`request`·`handler`로 토큰화됩니다. 출력은 약어를 소문자로 평탄화합니다(Java·TypeScript 관례). 스타일 가이드가 약어 보존(Go의 `HTTPRequestHandler` 형태)을 요구한다면 이 도구는 그 형태를 생성하지 않습니다. Go는 약어를 모두 대문자로 두는 `MixedCaps` 스타일을 권장하지만 구문 요건이 아니라 커뮤니티 선호입니다.

문장을 URL 슬러그로

입력
Why your AWS bill suddenly spikes
출력
kebab-case: why-your-aws-bill-suddenly-spikes
snake_case: why_your_aws_bill_suddenly_spikes

kebab-case는 URL 경로, CSS 클래스, npm 패키지명, 셸 명령명 등 대소문자 민감도가 신뢰되지 않는 곳의 관례입니다. URL 슬러그에서는 구두점을 제거하고 소문자로도 만들어야 하며, 이 도구는 케이스만 담당합니다. 완전한 슬러그 규칙(구두점 제거·악센트 제거·최대 길이)이 필요하면 URL Slug 도구를 사용하세요.

자주 묻는 질문

토크나이저는 어떻게 단어 경계를 찾나요?

규칙은 두 가지입니다. 첫째, 명시적인 구분자(`-`·`_`·`.`·`/`·공백)는 토큰을 끝냅니다. 둘째, 케이스 전환이 경계를 알립니다. 소문자나 숫자 뒤에 대문자가 따라오는 경우(`userId` → `user|Id`), 또는 대문자 연속 뒤에 "대문자 + 소문자"가 오는 경우(`HTTPRequest` → `HTTP|Request`)입니다. 둘을 합치면 일반적인 식별자 스타일을 거의 모두 포괄합니다. 비-ASCII 글자는 케이스 전환이 없어 식별자 안의 한국어·일본어는 단일 토큰으로 남습니다.

어느 언어에서 어떤 케이스를 골라야 하나요?

관례는 대체로 굳어져 있습니다. **JavaScript·TypeScript**: 변수·함수는 camelCase, 타입·컴포넌트는 PascalCase, 상수는 UPPER_SNAKE. **Python**: 변수·함수는 snake_case, 클래스는 PascalCase, 상수는 UPPER_SNAKE. **Rust**: 변수·함수는 snake_case, 타입·트레이트는 PascalCase, 상수는 UPPER_SNAKE. **Go**: 익스포트하는 이름은 `MixedCaps`, 그렇지 않은 것은 `mixedCaps`(camelCase), 언더스코어는 쓰지 않음. **CSS·HTML 속성**: kebab-case. **SQL·PostgreSQL**: 테이블·컬럼은 snake_case. **셸 스크립트**: 파일명은 소문자 또는 kebab-case, 환경 변수는 UPPER.

약어가 소문자로 바뀝니다 — `URL`이 `Url`로. 유지할 수 있나요?

이 도구로는 안 됩니다. 모든 케이스가 결합 전에 토큰을 소문자로 만듭니다. 약어 보존은 "이 토큰이 약어인가?"라는 토큰 단위의 판단이 필요하고, 입력이 아닌 컨텍스트에 의존합니다. Go의 스타일 가이드가 `HTTPRequest`를 요구한다면 소스 코드에 그 형태로 직접 쓰거나 에디터 명령을 사용하세요. Java·TypeScript처럼 `HttpRequest`가 선호되는 경우에는 이 도구 출력이 이미 일치합니다.

`apiV2` 같이 숫자가 들어간 식별자는?

`apiV2`는 `api`·`v2`로 토큰화됩니다. 소문자 `i`와 대문자 `V` 사이의 전환이 경계가 되기 때문입니다. 숫자 `2`는 `v` 토큰에 붙은 채로 남으므로 `snake_case` 결과는 `api_v_2`가 아니라 `api_v2`가 됩니다. 숫자를 독립 토큰으로 두고 싶다면(`api_v_2`) 붙여 넣기 전에 명시 구분자를 끼워 넣으세요(`apiV-2`).

한국어·일본어·중국어 문자도 처리되나요?

CJK 문자에는 케이스 전환이 없어 한 토큰으로 그대로 통과합니다. `사용자ID`는 `사용자`·`id`로 토큰화됩니다(한국어 부분은 1 토큰, 라틴 약어는 케이스 규칙으로 분리됨). 스크립트가 섞인 식별자에서는 실용적으로 잘 동작합니다. 순수 CJK 입력에서는 snake·kebab 외 다른 케이스가 결합 문자가 `_`인지 `-`인지의 차이뿐이라 시각적으로 거의 동일합니다.

여러 식별자를 한 번에 변환할 수 있나요?

이 도구는 입력을 단일 식별자로 다룹니다. 다중 줄을 붙여 넣으면 줄바꿈이 구분자로 작동해 하나의 거대한 토큰 시퀀스가 됩니다. SQL 테이블의 모든 컬럼명을 camelCase로 맞추는 실제 배치는 `awk`나 sed 명령에 파이프하거나 에디터의 다중 커서 선택을 사용하세요. 웹 도구는 식별자 하나씩 빠르게 처리하기 위해 만들어졌습니다.

관련 개념

식별자 케이스 스타일은 프로그래밍 언어가 이름 안에 쓰지 못하는 공백 없이 단어 경계를 표현하는 방식입니다. 5가지 형식이 주류입니다. **camelCase**는 첫 단어를 소문자로 두고 나머지를 대문자로 시작합니다 — JavaScript·Java·C# 메서드 등. **PascalCase**는 모든 단어를 대문자로 시작합니다 — 대부분 언어의 타입명, .NET 메서드, React 컴포넌트 등. **snake_case**는 소문자와 언더스코어로 결합합니다 — Python·Ruby·Rust·SQL 컬럼 등. **kebab-case**는 같은 일을 하이픈으로 합니다 — CSS·URL·셸 명령 등. **CONSTANT_CASE**(또는 SCREAMING_SNAKE)는 모두 대문자로 언더스코어 결합합니다 — 전역 상수·환경 변수·전처리기 매크로 등.

선택은 거의 전적으로 문화적이고 기술적이지 않습니다. 언어는 구문상 여러 스타일을 허용하며 커뮤니티 스타일 가이드에 따라갑니다 — Python의 PEP 8, Effective Go, Rust API Guidelines, Airbnb JavaScript Style Guide 등. 주변 생태계에 맞는 스타일을 고르면 코드가 grep하기 좋고, IDE 자동완성이 잘 동작하며, 코드 리뷰가 로직에 집중할 수 있습니다. 프로젝트 안에서 스타일이 섞이는 것이 실제 실수이며, 스타일 선택 자체보다 일관성을 지키는 것이 더 중요합니다.

팀을 모르게 걸려 넘어지게 하는 엣지 케이스가 둘 있습니다. **약어**는 커뮤니티에서 의견이 갈립니다. Java·TypeScript는 `HttpRequest`, Go는 `HTTPRequest`, Microsoft .NET은 길이에 따라 양쪽을 씁니다(`HtmlParser`이지만 `IO`). 어느 쪽을 택하든 리뷰어가 매주 다시 다투지 않도록 규칙을 명문화하세요. **데이터베이스 컬럼 ↔ 애플리케이션 속성** 매핑이 두 번째 핫스팟입니다 — PostgreSQL의 `user_profile_image_url`은 TypeScript 모델의 `userProfileImageUrl`이 되며, 결정론적인 케이스 변환 계층이 필요합니다. Prisma·SQLAlchemy·TypeORM 같은 ORM은 이를 스키마 정의에 내장합니다. 손으로 처리하는 자리에서 이 도구가 빛을 발합니다.

관련 도구