던스커버리 | Dawnscovery

가나다 순 텍스트 정렬기

줄 단위 텍스트 목록을 한글 가나다순, 영문 알파벳순, 글자 수, 숫자 크기순으로 정렬하고 중복 항목을 정리합니다.

처리는 전부 사용자 PC 브라우저 안에서 이루어집니다. 데이터가 서버로 전송되지 않아 안전합니다.

정렬:
원본 텍스트 입력 (줄바꿈 구분)
0줄 (0자)
정렬 완료 결과 0줄 (0자)

가나다순과 유니코드 번호순이 갈리는 지점

브라우저의 기본 정렬은 글자를 유니코드 번호 순으로 비교합니다. 그런데 완성형 한글이 들어 있는 U+AC00~U+D7A3 구간은 초성 × 588 + 중성 × 28 + 종성 순서로 배열되어 있습니다. 국어사전이 낱자를 따지는 순서와 같은 구조라, 현대 한글 단어끼리만 비교할 때는 번호순과 사전순이 정확히 일치합니다. 가방·감자·김밥·까치·꽃은 어느 쪽으로 세워도 결과가 같고, ㄱ으로 시작하는 단어가 모두 끝난 뒤에 ㄲ이 나오는 것까지 같습니다.

갈라지는 것은 한글에 다른 문자가 섞이는 순간입니다. 번호순으로는 숫자(U+0030)·대문자(U+0041)·소문자(U+0061)가 차례로 오고 한글은 그 한참 뒤에 있습니다. 그래서 영문이 무조건 앞으로 나오고 대문자와 소문자가 따로 뭉칩니다. 이 도구가 쓰는 한국어 사전순 비교는 한글을 먼저 놓고 Apple과 apple을 붙여 세웁니다. 아래는 같은 여섯 줄을 세 방식으로 세운 결과입니다.

순서 유니코드 번호순 한국어 사전순 사전순 + 숫자 인식 (이 도구)
1Apple가방가방
2apple나비나비
3가방항목10항목2
4나비항목2항목10
5항목10appleApple
6항목2Appleapple

낱자 기호도 자리가 다릅니다. ㄱ(U+3131)은 완성형 구간보다 앞에 있고, 반각 ᄀ(U+FFA1)은 힣(U+D7A3)보다 뒤라 번호순에서는 목록 맨 끝으로 밀려납니다. 사전순 비교는 이 둘을 모두 ㄱ 자리로 데려옵니다.

눈에는 같은데 중복으로 잡히지 않는 줄

macOS에서 만든 파일 이름이나 일부 프로그램에서 복사한 목록에는 조합형 한글이 섞여 들어옵니다. 사진이라는 두 글자가 완성형에서는 글자 두 개지만 조합형에서는 ㅅ·ㅏ·ㅈ·ㅣ·ㄴ 다섯 개로 쪼개져 저장됩니다. 화면에는 똑같이 보이는데 문자열로는 다른 값입니다.

중복 제거는 글자가 정확히 같은 줄끼리만 묶기 때문에 완성형 사진과 조합형 사진은 두 줄로 남습니다. 반면 사전순 비교는 둘을 같은 값으로 보므로 정렬 결과에서는 나란히 붙습니다. 똑같아 보이는 줄이 연달아 나온다면 이 경우를 의심하시면 됩니다. 조합형이 섞이면 번호순 정렬은 더 크게 어긋납니다. 조합형 낱자는 U+1100부터 시작해 완성형보다 앞이라, 가방·나비·사과 사이에 조합형 하늘 한 줄이 섞이면 하늘이 맨 앞으로 올라옵니다.

대소문자는 성격이 다릅니다. 정렬할 때는 대소문자를 구분하지 않지만 중복 제거는 글자 그대로 비교하므로, Apple과 apple은 두 줄 다 남은 채 서로 붙어서 나옵니다. 어느 쪽을 남길지는 정렬기가 정해 주지 않으니 먼저 한쪽으로 통일한 뒤에 넣어야 한 줄로 줄어듭니다. 공백 트림은 줄의 앞뒤만 정리합니다. 여기에는 눈에 안 보이는 전각 공백과 BOM도 함께 걸리지만, 가운데에 두 칸으로 벌어진 공백은 그대로 남아 서울 시청과 서울  시청은 끝까지 다른 줄로 취급됩니다.

정리 과정은 전부 브라우저 안에서 끝나고 목록이 서버로 올라가지 않으므로, 사번이나 고객명이 섞인 명단도 그대로 붙여 넣으실 수 있습니다.

숫자가 섞인 줄, 그리고 이 도구가 하지 않는 일

항목10이 항목2보다 앞에 오는 것은 글자 단위로 비교하기 때문입니다. 항목까지는 같고 그다음이 1 대 2인데 1이 작으므로 항목10이 먼저 나옵니다. 뒤에 0이 더 붙어 있다는 사실은 비교에 쓰이지 않습니다. 이 도구의 가나다순은 숫자 인식 옵션을 켜 두어 글자 사이에 낀 숫자 덩어리를 수로 읽습니다. 사진 파일명이나 회차 목록에서 이 차이가 그대로 드러납니다.

숫자 버튼은 방식이 다릅니다. 줄에서 숫자와 점, 빼기 기호만 남긴 뒤 하나의 수로 읽어 크기순으로 세웁니다. 그래서 한 줄에 숫자가 여러 번 나오는 목록에서는 가나다순 쪽이 의도한 결과에 가깝습니다.

원본 줄 숫자 버튼이 읽는 값 이유
항목10 10 한글은 버리고 숫자만 남습니다
가격 1,200원 1200 쉼표가 빠져 제 값으로 읽힙니다
A1B2 12 떨어져 있던 숫자 두 개가 이어 붙습니다
2024-01-15 2024 두 번째 빼기 기호에서 읽기를 멈춥니다
1.2.3 1.2 두 번째 점에서 읽기를 멈춥니다
열두 번째 0 숫자가 없으면 0으로 봅니다

글자수 정렬은 저장 단위를 셉니다. 완성형 한글 두 글자는 2, 같은 글자가 조합형이면 6, 이모지 하나는 2로 셉니다. 보이는 글자 수와 어긋날 수 있어 조합형이 섞인 목록에는 쓰기 어렵습니다.

ㄱ·ㄴ·ㄷ 색인처럼 초성만 뽑아 묶는 작업은 이 도구가 하지 않습니다. 사전순으로 세우면 까치가 김밥 뒤로 가는데, 연락처 색인에서는 보통 ㄲ을 ㄱ 안에 넣기 때문에 결과가 달라집니다. 초성별로 나누어야 한다면 글자코드에서 0xAC00을 뺀 뒤 588로 나누어 19개 초성 중 하나를 뽑는 계산이 따로 필요합니다.

다른 도구

전체 보기 →