대소문자 변환 도구
텍스트를 다양한 케이스 형식으로 변환해보세요. 카멜, 스네이크, 파스칼 케이스 등을 지원합니다.
Case Converter — 언어별 네이밍 컨벤션 레퍼런스
동일한 식별자를 userProfileId, UserProfileId, user_profile_id,user-profile-id, USER_PROFILE_ID로 변환해야 하는 상황은 일상적입니다. 이 도구는 입력 문자열의 단어 경계를 자동 감지(공백, 구분자, 대문자 전환 지점)한 뒤 7가지 케이스 스타일로 동시에 렌더링합니다. 각 스타일은 특정 언어·생태계의 스타일 가이드에 못 박혀 있어 팀 컨벤션 ≠ 개인 취향이며, 린터(eslint,pylint, rustfmt)가 CI에서 강제하는 경우가 많습니다.
언어·도메인별 표준 매핑
| 케이스 | 예시 | 표준 사용처 |
|---|---|---|
| camelCase | userProfileId | JavaScript/TypeScript 변수·함수, Java 메서드, Swift, Kotlin |
| PascalCase | UserProfileId | React 컴포넌트, C# 클래스, TS 인터페이스/type, Rust struct |
| snake_case | user_profile_id | Python(PEP 8), Ruby, Rust 함수/변수, PostgreSQL 컬럼 |
| SCREAMING_SNAKE_CASE | USER_PROFILE_ID | 상수, 환경변수(POSIX), C 매크로 |
| kebab-case | user-profile-id | URL slug, HTML 속성, CSS 클래스, npm 패키지명 |
| Train-Case | User-Profile-Id | HTTP 헤더(RFC 7230 권장 표기) |
| dot.case | user.profile.id | Java 패키지, i18n 키, Lodash 경로 |
단어 경계 감지 알고리즘
Case 변환의 핵심은 단어 분할(tokenization)입니다. 이 도구는 다음 규칙을 순서대로 적용합니다.
1. 구분자 분리: _, -, ., 공백 → 단어 경계 2. 대소문자 전환: aB → a | B (camelCase) 3. 연속 대문자 뒤 소문자: HTMLParser → HTML | Parser (lookahead: [A-Z]+(?=[A-Z][a-z])) 4. 숫자 경계: user2Id → user | 2 | Id (옵션) 예시 입력과 분할 결과: userProfileId → [user, Profile, Id] XMLHttpRequest → [XML, Http, Request] get_user_by_id → [get, user, by, id] api-v2-endpoint → [api, v2, endpoint] UserDTO → [User, DTO] ← 약어 유지가 관건
약어(acronym) 처리는 가장 까다로운 부분입니다. Google Java Style Guide는 XmlHttpRequest처럼 약어도 일반 단어로 취급해 Pascal로 쓰길 권장하는 반면, .NET BCL은 XMLHttpRequest처럼 대문자 유지를 허용합니다. 팀에서 한쪽을 택해 린터로 강제해야 합니다.
실전 시나리오 — API 경계에서의 케이스 변환
- 백엔드(Python/Rails) ↔ 프론트(React/TS) — 서버의 snake_case JSON을 프론트에서 camelCase로 매핑.
humps,camelcase-keys라이브러리나 Axios interceptor에서 재귀 변환 - GraphQL 스키마 — 스펙상 필드는 camelCase가 관례. Rails
graphql-ruby는 자동 변환 옵션 제공 - 환경변수 → 설정 객체 —
DATABASE_URL,REDIS_HOST를config.databaseUrl,config.redisHost로 매핑 - DB 마이그레이션 — 레거시 테이블의
UserId(Pascal) 컬럼을user_id(snake)로 리네이밍하는 Flyway/Alembic 스크립트 생성
주의 — 유니코드 대소문자와 Turkish I 문제
ECMAScript String.prototype.toLowerCase()는 locale-independent 변환을 수행하므로 대부분 안전하지만, Turkish locale의 dotless i(ı, U+0131)와 dotted I(İ, U+0130)는 예외입니다. 터키어 "I".toLocaleLowerCase("tr")는 "ı"를 반환하여 식별자 매칭 버그를 일으킵니다. 실제로 LinkedIn이 iOS 앱에서 이 이슈로 크래시를 경험했습니다(2012). 코드 식별자 변환은 항상 invariant(toLowerCase(), toUpperCase()) 사용이 안전합니다.
관련 도구
API 응답 JSON의 키를 한꺼번에 재정비하고 싶다면JSON 포매터로 구조를 먼저 훑고, URL slug로 쓸 케밥 케이스 값은 URL 인코더로 한글 포함 여부까지 검증하세요.
참고 자료
- Google Style Guides — Java, Python(PEP 8), TypeScript
- Microsoft — .NET Framework Design Guidelines: Capitalization Conventions
- Airbnb JavaScript Style Guide — Naming Conventions
- Unicode Technical Standard #21 — Case Mappings