대소문자 변환기 쉽게 이해하기 — 개념과 원리
이 변환기는 텍스트를 모두 대문자, 모두 소문자로 바꾸거나 글자마다 대소문자를 뒤바꿉니다. 유니코드 대소문자 규칙을 따르므로 A–Z뿐 아니라 악센트가 붙은 라틴 문자, 그리스 문자, 키릴 문자 등 대소문자가 있는 문자에 모두 적용되며, 글자 수, 대문자 수, 단어 수, 문자 수도 셉니다.
계산 방법
대문자: 모든 글자 → 기본 대문자 대응
소문자: 모든 글자 → 기본 소문자 대응
대소문자 바꾸기: 대문자 → 소문자, 소문자 → 대문자
대응은 유니코드 문자 데이터베이스(UnicodeData.txt, SpecialCasing.txt)를 따르며, toUpperCase(), toLowerCase()와 같습니다.
대소문자가 없는 문자(숫자, 한글, 한자, 문장부호)는 그대로 둡니다.
원리
유니코드의 대소문자 글자에는 정해진 짝이 있습니다. 대부분 é ↔ É, ж ↔ Ж처럼 일대일이지만, 독일어 ß처럼 대문자로 "SS"가 되는 일대다 대응도 있어 대문자로 바꾸면 글이 길어질 수 있습니다. 기본 대응은 특정 언어에 치우치지 않습니다. 터키어의 점 있는 i와 점 없는 ı처럼 일부 언어에는 특별한 규칙이 있는데, 이는 언어 설정을 반영하는 함수가 필요해 여기서는 적용하지 않습니다.
예제 풀이
기본값 "the quick brown fox jumps over the lazy dog. ß and é work too.", 대문자로 계산합니다.
- 모든 소문자가 대문자가 되고, ß는 SS, é는 É가 됩니다.
- 결과: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG. SS AND É WORK TOO.입니다.
- 바뀐 문자 47개, 텍스트의 글자 47개입니다.
- 변환 전 대문자 0개, 소문자 47개입니다.
- 단어 14개, 문자(코드 포인트) 62개입니다.
결과 해석
짧은 라벨이나 약어에는 대문자, Caps Lock으로 친 글을 정리할 때는 소문자, Caps Lock을 켠 줄 모르고 친 글을 고칠 때는 대소문자 바꾸기를 쓰십시오. 긴 글을 모두 대문자로 쓰면 읽기 어려우므로 본문에는 피하십시오. 특별한 규칙이 있는 언어라면 결과를 확인하십시오.
흔한 실수
- 길이가 그대로일 것이라고 생각하는 경우(ß → SS로 한 글자 늘어납니다)
- 긴 글을 모두 대문자로 써 가독성을 떨어뜨리는 경우
- 터키어 설정 없이 İ/ı 규칙을 기대하는 경우
- 한글도 바뀔 것으로 기대하는 경우(대소문자가 없습니다)
자주 묻는 질문
ß는 왜 SS가 되나요?
기본 대응에서는 대문자 ß 대신 전통적으로 SS를 쓰기 때문입니다.
그리스·키릴 문자도 되나요?
네. 대소문자가 있는 문자는 모두 바뀝니다.
한글은 바뀌나요?
아닙니다. 한글에는 대소문자가 없습니다.
출처: The Unicode Standard 15.1, §3.13 Default Case Algorithms (UnicodeData.txt and SpecialCasing.txt) · MDN Web Docs, "String.prototype.toLocaleUpperCase()"