T도구모음

대소문자 변환 도구

텍스트를 다양한 케이스 형식으로 변환해보세요. 카멜, 스네이크, 파스칼 케이스 등을 지원합니다.

소문자hello world
결과가 여기에 표시됩니다
대문자HELLO WORLD
결과가 여기에 표시됩니다
제목 케이스Hello World
결과가 여기에 표시됩니다
카멜 케이스helloWorld
결과가 여기에 표시됩니다
파스칼 케이스HelloWorld
결과가 여기에 표시됩니다
스네이크 케이스hello_world
결과가 여기에 표시됩니다
케밥 케이스hello-world
결과가 여기에 표시됩니다

Case Converter — 언어별 네이밍 컨벤션 레퍼런스

동일한 식별자를 userProfileId, UserProfileId, user_profile_id,user-profile-id, USER_PROFILE_ID로 변환해야 하는 상황은 일상적입니다. 이 도구는 입력 문자열의 단어 경계를 자동 감지(공백, 구분자, 대문자 전환 지점)한 뒤 7가지 케이스 스타일로 동시에 렌더링합니다. 각 스타일은 특정 언어·생태계의 스타일 가이드에 못 박혀 있어 팀 컨벤션 ≠ 개인 취향이며, 린터(eslint,pylint, rustfmt)가 CI에서 강제하는 경우가 많습니다.

언어·도메인별 표준 매핑

케이스예시표준 사용처
camelCaseuserProfileIdJavaScript/TypeScript 변수·함수, Java 메서드, Swift, Kotlin
PascalCaseUserProfileIdReact 컴포넌트, C# 클래스, TS 인터페이스/type, Rust struct
snake_caseuser_profile_idPython(PEP 8), Ruby, Rust 함수/변수, PostgreSQL 컬럼
SCREAMING_SNAKE_CASEUSER_PROFILE_ID상수, 환경변수(POSIX), C 매크로
kebab-caseuser-profile-idURL slug, HTML 속성, CSS 클래스, npm 패키지명
Train-CaseUser-Profile-IdHTTP 헤더(RFC 7230 권장 표기)
dot.caseuser.profile.idJava 패키지, 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

자주 묻는 질문

관련 도구