텍스트 케이스 변환이란?
텍스트 케이스 변환은 입력 문자열을 받아 같은 단어들을 다른 글자 대소문자 규칙으로 출력합니다. 가장 흔한 대상은 camelCase와 PascalCase(대부분 중괄호 계열 언어의 식별자), snake_case와 CONSTANT_CASE(Python, Ruby, Rust, C 매크로), kebab-case(URL, CSS 클래스명, HTML 속성, npm 패키지명), dot.case(설정 키, JavaScript 객체 경로), path/case(파일시스템 스타일 식별자), Title Case와 Sentence case(헤드라인과 본문), 그리고 완전한 lower case와 UPPER CASE입니다. 이 변환기는 입력의 자연스러운 단어 경계 — 공백, 하이픈, 언더스코어, 점, 슬래시, 그리고 helloWorld 같은 식별자를 가르는 소문자→대문자 전환 — 를 감지하여 각 대상 케이스가 요구하는 구분자와 대소문자 패턴으로 재조립합니다.
케이스 변환은 어떻게 동작하나요?
입력은 작은 바닐라 JavaScript 토크나이저와 11개의 케이스 포맷터로 전부 브라우저에서 처리됩니다. 큰 흐름은 다음과 같습니다:
- 입력은 텍스트 영역에서 그대로 읽힙니다 — 붙여 넣은 모든 바이트는 로컬 메모리에 보관됩니다.
- 토크나이저는 공백, 언더스코어, 하이픈, 점, 슬래시로 입력을 분할하고, 각 덩어리를 다시 소문자→대문자 경계로 분할합니다(따라서
helloWorld는["hello", "World"]가 됩니다). 글자↔숫자 경계로도 분할합니다(따라서v2API는["v", "2", "API"]가 됩니다). - 빈 토큰은 걸러지고 남은 토큰은
String.prototype.toLocaleLowerCase로 소문자화되어, 터키어, 독일어 등 로케일의 Unicode 글자가 정확하게 보존됩니다. - 이후 11개의 포맷터가 토큰을 각 대상 케이스로 차례차례 조립합니다 — camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, dot.case, path/case, Title Case(작은 단어 목록을 두어
and,the,of같은 단어가 처음·마지막을 제외하면 소문자로 유지됩니다), Sentence case, 완전한 소문자, 완전한 대문자. - 출력은 케이스마다 한 줄씩 결과 그리드에 기록됩니다. 각 줄에는 자체 복사 버튼이 있으며 비동기 Clipboard API를 사용하고, 옛 브라우저용으로 동기
document.execCommand('copy')폴백을 둡니다.
왜 케이스 변환기를 사용하나요?
- 식별자 리팩터: JavaScript 변수를
user_id에서userId로, Python 함수를helloWorld에서hello_world로, Rust 상수를maxBuffer에서MAX_BUFFER로 — 글자 하나하나 손으로 편집하지 않고 다시 명명할 수 있습니다. - 설정 키 변환: camelCase 키로 가득한 JSON 설정을 한 번 붙여넣기로 Python 서비스용 snake_case YAML 또는 Helm 차트용 kebab-case로 바꿀 수 있습니다.
- 헤드라인 작성: 초안 헤드라인을 붙여넣고 Title Case 형식(Chicago Manual of Style 의 작은 단어 예외 포함)과 Sentence case 형식(AP Stylebook)을 나란히 읽어 — 매체에서 사용하는 쪽을 선택하세요.
- URL 슬러그 생성: 블로그 글 제목을 붙여넣고 kebab-case 형식을 CMS의 슬러그 필드에 바로 복사 — 토크나이저가 구두점과 여러 단어 구를 처리해 불필요한 구분자를 남기지 않습니다.
케이스 변환의 일반적인 응용은 무엇인가요?
글자 대소문자 규칙 간 전환은 소프트웨어 엔지니어링, 콘텐츠 작성, 데이터 엔지니어링 전반에 등장합니다:
- 코드 리팩터링: 스타일 가이드가 바뀔 때 코드베이스 전반에 걸쳐 식별자를 다시 명명(예: 백엔드 재작성 시 JavaScript camelCase → Python snake_case)하되 오타 없이 수행합니다.
- API 페이로드 재구성: camelCase JSON 키를 Ruby on Rails 또는 Django 백엔드에 보내기 전에 snake_case로 변환하거나, CSS-in-JS 클래스 이름용으로 kebab-case로 바꿉니다.
- 헤드라인과 슬러그 작성: 같은 원본 헤드라인에서 Title Case 페이지 제목, Sentence case 메타 설명, kebab-case URL 슬러그를 한 번에 만듭니다.
케이스 변환 예는 어떤 모양인가요?
입력에 Hello World API를 붙여넣으세요. 결과 그리드는 11개 행을 동시에 그립니다: helloWorldApi(camelCase), HelloWorldApi(PascalCase), hello_world_api(snake_case), HELLO_WORLD_API(CONSTANT_CASE), hello-world-api(kebab-case), hello.world.api(dot.case), hello/world/api(path/case), Hello World Api(Title Case), Hello world api(Sentence case), hello world api(lower case), HELLO WORLD API(UPPER CASE). 같은 입력을 helloWorldAPI로 붙여넣어도 동일한 세 단어로 토큰화됩니다 — 소문자→대문자 경계 감지기가 이 형태도 처리합니다.
내 브라우저에서 실행되나요?
예. 토크나이저와 11개의 케이스 포맷터는 약 120줄의 바닐라 JavaScript로, 브라우저 탭 안에서 실행됩니다. 어떤 것도 업로드되지 않고, 입력을 중계하는 서비스 워커도 없으며, 변환 단계 자체에서 네트워크 요청은 일어나지 않습니다. 발생하는 송신은 표준 페이지 로드 자산(CSS, 폰트, 분석)뿐이며, 텍스트는 결코 Ultim8Soft에 도달하지 않습니다.
변수 이름에는 어떤 케이스 형식을 써야 하나요?
언어와 팀의 스타일 가이드에 따라 다릅니다. JavaScript와 TypeScript 코드베이스는 압도적으로 camelCase를 변수와 함수에, PascalCase를 클래스와 React 컴포넌트에, CONSTANT_CASE를 환경 변수 이름과 모듈 수준 상수에 사용합니다 — Google JavaScript 스타일 가이드와 Airbnb 스타일 가이드 모두 그렇게 정합니다. Python(PEP 8), Ruby, Rust는 변수·함수에 snake_case, 클래스에 PascalCase, 모듈 수준 상수에 CONSTANT_CASE를 선호합니다. C와 C++ 코드베이스(Linux 커널, LLVM)는 함수에 snake_case를, 전처리기 매크로에 CONSTANT_CASE를 사용합니다. 잘 모르겠다면 팀의 linter나 formatter를 돌리세요 — 어떤 규약이 강제되는지 알려 줍니다.
입력은 어떻게 토큰화되나요?
토크나이저는 먼저 공백, 언더스코어(_), 하이픈(-), 점(.) 또는 슬래시(/)의 연속에서 입력을 분할합니다. 각 결과 덩어리는 소문자→대문자 경계에서 다시 분할되어(따라서 helloWorld는 ["hello", "World"]가 됩니다), 글자↔숫자 경계에서도 분할됩니다(따라서 v2API는 ["v", "2", "API"]가 됩니다). 빈 토큰을 제거하고 남은 토큰은 String.prototype.toLocaleLowerCase를 통해 소문자화됩니다. 그러면 포맷터들이 각 대상 케이스가 요구하는 구분자로 토큰을 다시 대문자화하고 결합합니다. 이 전략은 흔한 6가지 식별자 형태 — camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, 그리고 일반적인 공백 분리 문장 — 를 기본으로 처리합니다.
Unicode / 비 ASCII 문자는 어떻게 되나요?
Unicode 글자는 왕복을 살아남습니다. 토크나이저는 String.prototype.toLocaleLowerCase와 toLocaleUpperCase를 사용하며, 이들은 로케일별 케이스 규칙을 지킵니다 — 터키어의 점 있는/없는 i, 독일어 ß가 SS로 대문자화되는 것, 프랑스어와 스페인어의 강세 라틴 글자 등. 구분자 집합(공백, _, -, ., /)에 없는 비 글자 문자 — 예를 들어 숫자, 강세 글자, CJK 문자 — 는 해당 토큰 내부에 보존되며 케이스 포맷터가 그대로 재출력합니다. 이는 nœud_principal 같은 입력이 ["nœud", "principal"]로 토큰화되어 nœudPrincipal(camelCase) 또는 NœudPrincipal(PascalCase)로 깔끔하게 변환됨을 뜻합니다.
이 케이스 변환기는 토크나이저와 11개의 포맷터를 모두 브라우저에서 실행하는 단일 정적 페이지입니다 — 외부 라이브러리 없음, 변환마다의 네트워크 호출 없음, 계정 없음. 위에 아무 텍스트나 붙여넣고 11가지 케이스 출력을 나란히 확인한 뒤 필요한 것을 복사하세요.