본문으로 바로가기

대소문자 변환기

글을 대문자·소문자·제목 형식·문장 형식으로 바꾸고, 변수 이름을 camelCase·snake_case·kebab-case 등 다섯 가지 표기법으로 바꿉니다. 변환 방식은 모두 열한 가지입니다.

0자 · 0줄

0자 · 0줄

입력한 내용은 이 브라우저 안에서만 처리되며 서버로 전송되지 않습니다. 어떻게 동작하나요?

소문자 hello world와 대문자 HELLO WORLD 사이의 양방향 변환

사용 방법

’입력’에 글을 붙여 넣고 ’변환 방식’에서 열한 가지 가운데 하나를 고릅니다. 처음에는 ’대문자 (UPPER CASE)’가 선택되어 있습니다.

열한 가지는 성격이 다른 두 묶음입니다. 앞의 여섯 가지는 글의 대소문자만 바꾸고 띄어쓰기와 문장부호, 줄바꿈은 그대로 둡니다. 뒤의 다섯 가지는 프로그래밍에서 쓰는 식별자 표기법으로, 입력 전체를 이름 하나로 만들면서 공백과 기호를 없앱니다.

’대소문자 규칙(로케일)’은 앞의 여섯 가지에만 적용됩니다. 식별자 표기법을 고르면 “카멜 케이스 등 식별자 변환에는 로케일이 적용되지 않습니다.“라는 안내와 함께 잠깁니다.

변환 방식별 결과

the quick brown fox를 넣었을 때 방식마다 나오는 결과입니다.

변환 방식 결과
대문자 (UPPER CASE) THE QUICK BROWN FOX
소문자 (lower case) the quick brown fox
제목 형식 (Title Case) The Quick Brown Fox
문장 형식 (Sentence case) The quick brown fox
대소문자 반전 (InVeRsE) THE QUICK BROWN FOX
번갈아 쓰기 (aLtErNaTe) tHe QuIcK bRoWn FoX
카멜 케이스 (camelCase) theQuickBrownFox
파스칼 케이스 (PascalCase) TheQuickBrownFox
스네이크 케이스 (snake_case) the_quick_brown_fox
케밥 케이스 (kebab-case) the-quick-brown-fox
상수 케이스 (CONSTANT_CASE) THE_QUICK_BROWN_FOX

’대소문자 반전 (InVeRsE)’은 글자마다 대문자와 소문자를 맞바꿉니다. 위 예시는 전부 소문자라 결과가 대문자와 같지만, Hello World를 넣으면 hELLO wORLD가 됩니다. ’번갈아 쓰기 (aLtErNaTe)’는 소문자에서 시작해 한 글자씩 번갈아 바꾸며, 공백과 숫자는 순서에 넣지 않고 건너뜁니다.

제목 형식과 문장 형식의 규칙

두 방식 모두 먼저 글 전체를 소문자로 바꾼 다음 정해진 자리의 글자만 대문자로 올립니다. 영어 문법이나 고유명사를 알아보지는 못하므로, 결과를 그대로 쓰기 전에 다음 경우를 확인하세요.

제목 형식 (Title Case)

공백으로 나뉜 낱말마다 첫 글자를 대문자로 바꿉니다.

  • 관사와 전치사도 가리지 않고 올립니다. the lord of the rings는 The Lord Of The Rings가 됩니다.
  • 원래 있던 대문자는 사라집니다. iPhone and NASA는 Iphone And Nasa가 됩니다.
  • 하이픈 뒤는 새 낱말로 보지 않습니다. well-known은 Well-known이 됩니다.
  • 괄호나 따옴표로 시작하는 낱말은 올리지 않습니다. (draft)는 (draft) 그대로입니다.

문장 형식 (Sentence case)

글의 첫 글자와 마침표·물음표·느낌표 뒤의 첫 글자만 대문자로 바꿉니다.

  • hello world. this is NASA! is it? yes는 Hello world. This is nasa! Is it? Yes가 됩니다.
  • 사람 이름과 지명도 소문자가 됩니다. I met John in Paris는 I met john in paris가 됩니다.
  • 줄임말과 소수의 점도 문장의 끝으로 봅니다. e.g. apple and version 2.5 beta는 E.G. Apple and version 2.5 Beta가 됩니다.
  • 줄바꿈은 문장의 끝으로 보지 않습니다. 마침표 없이 줄만 바꾼 목록은 첫 줄만 대문자로 시작합니다.

식별자 표기법에서 낱말을 나누는 기준

다섯 가지 식별자 표기법은 입력을 낱말로 나눈 뒤 표기법에 맞게 다시 이어 붙입니다. 낱말을 나누는 자리는 세 가지입니다.

  • 공백, 밑줄(_), 하이픈(-)을 비롯해 글자와 숫자가 아닌 모든 기호
  • 소문자나 숫자 바로 뒤에 대문자가 오는 자리
  • 대문자가 여럿 이어진 뒤 소문자가 올 때, 그 소문자 앞에 있는 대문자의 바로 앞 (XMLHttp는 XML과 Http로 나뉩니다)

그래서 이미 다른 표기법으로 적힌 이름도 바꿀 수 있습니다.

입력 변환 방식 결과
user_first_name 카멜 케이스 (camelCase) userFirstName
user first name 케밥 케이스 (kebab-case) user-first-name
XMLHttpRequest 스네이크 케이스 (snake_case) xml_http_request
parseHTMLString 케밥 케이스 (kebab-case) parse-html-string
user2Name 스네이크 케이스 (snake_case) user2_name
price ($) 상수 케이스 (CONSTANT_CASE) PRICE

낱말을 나누는 기호는 결과에 남지 않습니다. 마지막 줄처럼 기호만 있는 부분은 통째로 사라집니다. 소문자 한 글자로 시작하는 상표 이름은 뜻하지 않게 나뉘기도 합니다. iPhone은 ’스네이크 케이스 (snake_case)’에서 i_phone이 됩니다.

대소문자 규칙(로케일)

’대소문자 규칙(로케일)’에서는 ’로케일 없음 (기본 규칙)’과 튀르키예어, 아제르바이잔어, 리투아니아어를 고를 수 있고, 처음에는 ’로케일 없음 (기본 규칙)’이 선택되어 있습니다. 대소문자 규칙이 언어에 따라 달라지는 경우가 있어서 둔 옵션입니다. 대표적인 예가 튀르키예어로, 소문자 i의 대문자가 점이 있는 İ이고 대문자 I의 소문자가 점 없는 ı입니다.

한국어, 영어, 일본어, 독일어, 스페인어에는 그런 특수 규칙이 없습니다. 이 언어들로 쓴 글은 처음 값 그대로 두면 됩니다. 튀르키예어나 아제르바이잔어를 고르면 istanbul의 대문자가 ISTANBUL이 아니라 İSTANBUL이 되고, 리투아니아어를 고르면 악센트가 붙은 대문자 Ì를 소문자로 바꿀 때 i 위의 점을 남깁니다.

참고 자료

자주 묻는 질문

독일어 ß를 대문자로 바꾸면 왜 SS 두 글자가 되나요?

유니코드 표준이 소문자 ß(에스체트)의 대문자를 SS 두 글자로 정해 두었기 때문입니다. '대소문자 규칙(로케일)'을 무엇으로 고르든 똑같이 적용됩니다. straße를 '대문자 (UPPER CASE)'로 바꾸면 STRASSE가 되어 6자가 7자로 늘어나고, 이것을 다시 '소문자 (lower case)'로 바꾸면 strasse가 되어 원래의 ß로 돌아가지 않습니다. 글자 수 제한이 있는 칸에 넣을 글이라면 변환한 뒤에 길이를 다시 확인하세요.

변수 이름을 한 줄에 하나씩 여러 개 넣었더니 하나로 합쳐집니다. 따로따로 바꿀 수 없나요?

없습니다. 식별자 표기법 다섯 가지는 입력 전체를 이름 하나로 봅니다. 줄바꿈도 낱말을 나누는 자리로만 쓰이므로, first name과 last name을 두 줄로 넣고 '스네이크 케이스 (snake_case)'를 고르면 first_name_last_name 하나가 나옵니다. 이름은 한 번에 하나씩 넣어야 합니다. 대문자, 소문자, 제목 형식처럼 글을 바꾸는 여섯 가지 방식은 줄바꿈을 그대로 둡니다.

바꾼 결과를 그대로 변수 이름으로 써도 되나요?

대부분 쓸 수 있지만 세 가지는 직접 확인해야 합니다. 첫째, 숫자로 시작하는 입력은 결과도 숫자로 시작합니다. 2nd place는 '카멜 케이스 (camelCase)'에서 2ndPlace가 되는데, 숫자로 시작하는 이름을 허용하지 않는 프로그래밍 언어에서는 그대로 쓸 수 없습니다. 둘째, 아포스트로피도 낱말을 나누는 기호로 보아서 don't stop은 donTStop이 됩니다. 셋째, 악센트가 붙은 글자와 한글·한자·가나처럼 로마자가 아닌 글자는 영문으로 바꾸지 않고 그대로 둡니다. 'crème brûlée'는 '스네이크 케이스 (snake_case)'에서 'crème_brûlée'가 됩니다.

최종 수정일: