본문으로 건너뛰기
LeedyBox
후원

케이스 변환기 (camelCase, snake_case …)

이름을 한 줄씩 변환하거나, JSON 문서의 모든 키를 camelCase, PascalCase, snake_case, kebab-case 등으로 바꿉니다.

첫 줄을 모든 스타일로 보기

사용하기 전에 결과를 확인하세요. 이 도구는 보증 없이 있는 그대로 제공되며, 결과가 불완전하거나 틀릴 수 있습니다. 이용약관

단어 경계는 자동으로 감지하고 약어는 정규화합니다(예: userID → userId). 키 이름을 바꾸면 원래 이름에 의존하는 코드, API, 데이터베이스 매핑이 깨질 수 있습니다.

사용 방법

  1. "적용 대상"을 "텍스트의 각 줄"로 둔 채 "입력"에 이름을 한 줄에 하나씩 붙여넣거나 입력하세요. 각 줄은 따로 변환되며, 빈 줄과 줄 앞뒤의 공백이나 탭은 그대로 유지됩니다.
  2. "변환 형식"에서 camelCase, snake_case, CONSTANT_CASE 같은 스타일을 고르세요. 입력하거나 옵션을 바꾸면 결과가 갱신되므로 따로 변환 버튼은 없습니다.
  3. JSON 문서의 키 이름을 바꾸려면 "적용 대상"을 "JSON 키 (값은 그대로)"로 설정하고 문서 전체를 붙여넣으세요. 중첩된 객체와 배열 안의 키도 함께 바뀝니다.
  4. "텍스트의 각 줄" 모드에서는 "첫 줄을 모든 스타일로 보기" 상자에 입력에서 비어 있거나 공백만 있는 줄을 건너뛴 첫 줄이 10가지 스타일로 모두 표시되므로, 스타일을 고르기 전에 비교해 볼 수 있습니다.
  5. "결과"를 확인한 다음 "결과 복사"를 누르세요.

자주 묻는 질문

입력한 텍스트가 어딘가로 전송되나요?

아니요. 변환은 브라우저에서 JavaScript로 실행되며, 입력한 이름이나 JSON은 LeedyBox로 업로드되지 않습니다.

한 단어가 끝나고 다음 단어가 시작되는 위치는 어떻게 정하나요?

소문자나 숫자 뒤에 대문자가 오는 곳(fooBar, user2Name), 대문자가 연달아 나오다가 소문자가 이어질 때 그 마지막 대문자의 앞(XMLHttp는 XML과 Http로 나뉨), 그리고 공백, 밑줄, 하이픈, 점처럼 글자나 숫자가 아닌 모든 문자에서 새 단어가 시작됩니다. 글자와 숫자가 바뀌는 것만으로는 새 단어가 시작되지 않으므로, base64Encode는 snake_case에서 base64_encode가 되고 user2name은 한 단어로 남습니다.

다시 변환해도 원래 이름으로 돌아오지 않는 이유는 무엇인가요?

변환 과정에서 일부 정보가 사라지기 때문입니다. 각 단어의 대소문자는 선택한 스타일에 따라 새로 정해지므로, parseHTML은 snake_case에서 parse_html이 되고 이를 다시 camelCase로 바꾸면 parseHtml이 됩니다. 또 구분자가 없어지면 숫자가 앞 단어에 붙습니다. 예를 들어 total_amount_2는 camelCase에서 totalAmount2가 되고, 이를 다시 snake_case로 바꾸면 total_amount2가 됩니다. 정확히 원래대로 되돌려야 한다면 원래 이름을 따로 보관하세요.

문장 부호는 왜 사라지고, Title Case는 왜 모든 단어의 첫 글자를 대문자로 바꾸나요?

글자나 숫자가 아닌 문자는 모두 단어 사이의 경계로 처리됩니다. 문장 부호와 기호는 결과에 옮겨지지 않고, 단어 사이에는 해당 스타일에 구분자가 있을 때 그 구분자만 들어갑니다. 그래서 "Hello, world!"는 lower case에서 "hello world"가 되고, don't는 don t가 됩니다. Title Case는 of나 the 같은 짧은 단어까지 포함해 모든 단어의 첫 글자를 대문자로, 나머지를 소문자로 바꾸므로 NASA는 Nasa가, iPhone은 I Phone이 됩니다. 이 도구는 문장보다는 이름과 식별자를 위한 것입니다.

_id, @type, $ref 같은 JSON 키는 어떻게 되나요?

맨 앞의 기호는 구분자로 취급되어 제거됩니다. camelCase에서 _id는 id, @type은 type, $ref는 ref가 됩니다. $처럼 기호로만 된 키는 이름이 그대로 유지됩니다. 같은 객체 안의 두 키가 같은 이름이 되면(예: _id와 id, 또는 user_name과 userName) 두 키와 그 객체의 경로(최상위는 $ 등)를 알려 주는 오류를 표시하고 아무것도 변환하지 않으므로, 덮어쓰이는 값은 없습니다.

JSON 모드에서 키 말고도 바뀌는 것이 있나요?

문서를 해석한 뒤 공백 2칸 들여쓰기로 다시 쓰므로 공백과 줄바꿈이 달라질 수 있습니다. 숫자는 JavaScript를 거치기 때문에 1.0은 1로, 1e2는 100으로 쓰이고, 9007199254740991보다 큰 정수와 자릿수가 많은 소수는 반올림될 수 있으며, 1e400처럼 JavaScript에서 다루기에 너무 큰 숫자는 null이 됩니다. 문자열 안의 일부 이스케이프는 일반 문자로 바뀌어, 예를 들어 \u00e9는 é로, \/는 /로 쓰입니다. "2"나 "_3"처럼 원래부터 또는 변환 후에 앞에 0이 없는 4294967295 미만의 정수 형태가 되는 키는 객체 안에서 다른 키보다 앞으로, 숫자 순서대로 옮겨집니다. 한 객체에 같은 키가 두 번 나오면 경고 없이 마지막 값만 남습니다. 입력은 엄격한 JSON이어야 하므로 주석이나 끝에 붙은 쉼표가 있으면 오류가 납니다.

악센트가 붙은 글자나 라틴 문자가 아닌 문자에도 쓸 수 있나요?

어떤 문자 체계의 글자든 단어를 이루는 문자로 세며, é처럼 한 문자로 저장된 악센트 글자도 다른 글자와 똑같이 처리됩니다. 한국어, 중국어, 일본어처럼 대소문자가 없는 문자는 글자가 그대로 유지되고, 단어 사이의 구분자만 선택한 스타일을 따릅니다. 대소문자 변환은 일반 유니코드 규칙을 따르므로 UPPER CASE에서 ß는 SS가 되고, 대문자 İ는 소문자로 바꾸면 보통의 i가 됩니다. 터키어나 아제르바이잔어 이름이라면 "터키어 문자 규칙"을 켜세요. 그러면 I는 ı로, i는 İ로 바뀝니다. 태국어 성조 부호, 태국어와 힌디어의 모음 부호, 별도 문자로 저장된 악센트 같은 결합 문자는 앞 글자에 붙은 채로 유지됩니다. 태국어, 중국어, 일본어처럼 단어 사이를 띄우지 않는 글은 공백이나 다른 구분자가 있는 곳에서만 나뉩니다.