대소문자 변환 도구
텍스트의 대소문자를 빠르게 변환하며, 다양한 프로그래밍 명명 규격을 지원합니다
변환 방식 선택
대소문자 변환이란?
대소문자 변환은 텍스트의 알파벳 문자를 다양한 대소문자 형식으로 변환하는 작업입니다. 기본적인 모두 대문자, 모두 소문자, 첫 글자 대문자 이외에도 다양한 프로그래밍 명명 규격의 변환을 지원합니다. 예: 카멜 표기법(camelCase), 파스칼 표기법(PascalCase), 스네이크 표기법(snake_case) 등. 이러한 변환 기능은 프로그래머와 편집자에게 매우 유용하며, 텍스트 형식을 빠르게 통일하거나 변수 명명 스타일을 변환할 수 있습니다.
사용 방법
기본 조작
- 왼쪽 입력 상자에 변환할 텍스트를 입력하거나 붙여넣으세요
- 해당 버튼을 클릭해 변환 모드를 선택하세요
- 오른쪽에 변환된 결과가 자동으로 표시됩니다
- '복사'를 클릭하여 결과를 클립보드에 복사하세요
텍스트 규칙
- 대소문자 변환은 단순 라틴 텍스트에 가장 잘 맞습니다. 고유명사, 약어, 코드 식별자, 로케일별 문자는 수동으로 검토해야 할 수 있습니다.
- 운영 텍스트를 교체하기 전에 구두점, 공백, 단어 경계가 그대로 유지되었는지 확인하세요.
활용 사례
기술 원리
대문자와 소문자는 단순한 ASCII 치환이 아닙니다. JavaScript는 toUpperCase, toLowerCase, 로케일 인식형인 toLocaleUpperCase/toLocaleLowerCase를 제공합니다. 대표적인 튀르키예 함정은 'I'.toLocaleLowerCase('tr-TR')가 점 없는 'ı'(U+0131)를 반환하고, 'i'.toLocaleUpperCase('tr-TR')가 점 있는 'İ'(U+0130)를 반환하는 것입니다. 독일어 'ß'는 기본 로케일에서 'SS'로 대문자 변환되지만 'de-DE-x-eszett'에서는 대문자 에스체트 'ẞ'(U+1E9E)가 됩니다. 이 도구는 사용자가 별도로 선택하지 않는 한 기본 로케일에서 실행되며, 이는 대부분의 코드 식별자가 기대하는 동작과 일치합니다. camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, path/case는 모두 입력을 단어 토큰으로 분리하는 것에서 시작합니다. 단어 경계는 공백, 하이픈, 밑줄, 점, 슬래시, 그리고 소문자에서 대문자로의 전환 지점에서 감지됩니다(예: 'userProfileID'는 ['user', 'Profile', 'ID']로 분리). 토큰 목록은 소문자 변환 후 스타일에 따라 첫 글자를 대문자화하고 대상 구분자로 결합합니다: camelCase와 PascalCase는 '', snake_case는 '_', kebab-case는 '-', CONSTANT_CASE는 '_'와 대문자, dot.case는 '.', path/case는 '/'. Sentence case는 문장 끝 구두점(., !, ?)과 공백 뒤 첫 글자만 대문자화하고, Title Case는 각 단어의 첫 글자를 대문자화하고 나머지는 소문자화합니다. Unicode에는 이중자음 'Dž'(U+01C5) 같은 전용 타이틀케이스 코드 포인트가 있으며, 이는 소문자 'dž'도 대문자 'DŽ'도 아닌 별개의 문자입니다. 표준 String.prototype 메서드로는 이를 생성할 수 없으며, 완전한 Unicode 타이틀케이징에는 전문 라이브러리가 필요합니다. URL 슬러그화에는 추가 정규화 단계 — NFKD와 결합 기호 제거 — 가 필요하여 kebab-case 결합 전에 'café'를 'cafe'로 변환합니다.
- 로케일 함정: 'I'.toLocaleLowerCase('tr-TR') = 'ı'; 'i'.toLocaleUpperCase('tr-TR') = 'İ'; 독일어 'ß'는 기본적으로 'SS'로 대문자 변환, de-DE-x-eszett에서는 'ẞ'
- 단어 분리: 공백, '-', '_', '.', '/', 소문자→대문자 전환 지점에서 토큰화 ('userProfileID' → ['user','Profile','ID'])
- 스타일 조합: camelCase = 첫 단어 소문자 + 나머지 대문자화, 결합 ''; PascalCase = 모두 대문자화, 결합 ''; snake = '_'; kebab = '-'
- CONSTANT_CASE / SCREAMING_SNAKE: snake_case를 toUpperCase에 통과시킴, 환경 변수 키에 흔히 사용
- Sentence case: [.!?]와 공백 뒤 첫 글자만 대문자화; 나머지는 모두 소문자
- Unicode 타이틀케이스: 'Dž'(U+01C5) 같은 전용 코드 포인트가 존재하지만 String.prototype 메서드로는 생성 불가
- 슬러그화 파이프라인: str.normalize('NFKD').replace(/\p{M}+/gu, '')로 발음 구별 기호를 제거하여 kebab-case 전에 'café'를 'cafe'로 변환
예시
'hello world'를 모든 일반적인 케이스로 변환
입력: hello world
UPPERCASE: HELLO WORLD
lowercase: hello world
Capitalize: Hello World
Sentence case: Hello world
camelCase: helloWorld
PascalCase: HelloWorld
snake_case: hello_world
kebab-case: hello-world
CONSTANT_CASE: HELLO_WORLD
dot.case: hello.world
path/case: hello/worldJavaScript 변수를 Python용 snake_case로 리팩터링
입력: userProfileSettings
snake_case 출력: user_profile_settings
CONSTANT_CASE: USER_PROFILE_SETTINGS
# JavaScript (camelCase)와 Python (snake_case) 사이에서
# 코드를 옮길 때 유용합니다.글 제목을 URL 슬러그로 변환
입력: My First Blog Post: A Beginner's Guide!
kebab-case: my-first-blog-post-a-beginners-guide
최종 URL: https://blog.example.com/my-first-blog-post-a-beginners-guide스타일 텍스트용 대소문자 토글
입력: Hello World
tOGGLE: hELLO wORLD
입력: ToolAct Online
tOGGLE: tOOLaCT oNLINE자주 묻는 질문
어떤 대소문자 스타일을 지원하나요?
UPPERCASE, lowercase, Title Case(단어마다 첫 글자 대문자), Sentence case(문장 첫 글자만 대문자), camelCase(첫 단어만 소문자), PascalCase(첫 단어부터 대문자), snake_case, kebab-case, CONSTANT_CASE를 모두 실시간으로 변환합니다.
Title Case와 Sentence case는 어떻게 다른가요?
Title Case는 의미 있는 단어마다 첫 글자를 대문자로 씁니다. 예: 'The Quick Brown Fox'. Sentence case는 첫 단어와 고유명사만 대문자로 씁니다. 예: 'The quick brown fox'. Title Case에는 a, an, the, of, in 같은 짧은 단어를 건너뛰는 등 여러 스타일이 있는데, 페이지는 보통 APA 또는 AP 스타일을 사용합니다. 옵션 목록에서 확인하세요.
한자, 일본어, 한글은 어떻게 처리되나요?
중국어, 일본어, 한국어 문자에는 대소문자가 없으므로 그대로 유지됩니다. CJK와 라틴 문자가 섞여 있으면 라틴 부분만 변환됩니다. 일본어 로마자, 중국어 병음, 한국어 로마자 표기는 일반적인 라틴 문자처럼 정상적으로 변환됩니다.
발음 부호가 붙은 글자도 처리되나요?
네. é → É, ñ → Ñ, ß → SS(독일어 대문자 에스체트, 유니코드 규칙에 따름)처럼 변환됩니다. 일부 구식 시스템은 ß를 SS로 매핑하지만, 최신 유니코드는 ẞ도 허용합니다. 페이지는 JavaScript의 toLowerCase/toUpperCase를 사용하므로 유니코드 케이스 폴딩 규칙을 따릅니다.
터키어 I는 왜 이상하게 동작하나요?
터키어에는 점이 없는 ı와 점이 있는 i가 따로 있어, 터키어 로케일에서는 대문자 I의 소문자가 i가 아닌 ı(점 없음)입니다. JavaScript의 기본 대소문자 변환은 로케일 규칙을 적용하지 않습니다. 터키어 케이싱이 중요한 코드라면 String.prototype.toLocaleLowerCase('tr')을 사용하세요.
snake_case에서 다시 Title Case로 변환할 수 있나요?
네. 감지기가 자주 쓰이는 케이스 스타일을 인식해 어떤 조합이든 서로 변환합니다. snake_case ↔ kebab-case, PascalCase ↔ camelCase 등이 가능합니다. 다만 PascalCase의 약어(예: HTMLParser)는 페이지가 연속된 대문자를 한 단어로 보느냐 여러 단어로 보느냐에 따라, snake_case를 거치며 깔끔하게 왕복되지 않을 수 있습니다.
입력한 텍스트가 업로드되나요?
아니요. JavaScript의 문자열 메서드를 이용해 브라우저에서 변환하며, 붙여넣은 텍스트는 외부로 전송되지 않습니다.