King of Stock
Array.sort 함수는 한글을 어떻게 정렬시킬까? 본문
한글 배열을 정렬해야 하는 상황이 있어서 정렬 함수를 만들고자 코드를 짜던 중에 있는 함수 sort()가 어찌 처리를 하는지 궁금하여 한번 돌려봤습니다.
아래는 코드입니다.
위에 코드를 돌려보면 아래와 같이 결과가 나옵니다.
그런데 마음에 안드는 결과가 나와버렸습니다. 그냥 매개변수 없이 돌리나, 방향을 바꿔서 돌리나 정렬은 첫 글자 초성 기준으로만 하는 것으로 보여지네요. 자동문, 장동건, 장동민 글자에서 내림차순은 장동민, 장동건, 자동문 순서로 오름차순은 자동문, 장동건, 장동민 순서로 나와야 하는데 말이죠.
이렇게 정렬이 되는 것은 원하지 않으니 함수를 만들어 봅니다.
한글끼리 비교시 Character 배열로 변환을 해서 인덱스별로 각각 비교를 하고 비교하는 문자가 동일할때 다음 인덱스 비교를 하도록 구현된 함수입니다. 비교결과 Bool 값은 입맛에 맞도록 하시면 되겠네요.
유니코드 스칼라로 비교도 해봤지만 결과를 동일해서 단순하게 바꾸었습니다.
그래서 결과는 이렇게 나오네요.
허허허...
"ㄱ" 문자열에 대한 정렬과 "ㄱㅏ" 문자열에 대한 정렬 결과는 비교하는 문자열마다 또 다른 예외를 넣어야 하겠네요.
이만...
'IT 기술' 카테고리의 다른 글
스프링부트 자동설정 조건 어노테이션 (0) | 2018.12.29 |
---|---|
[macOS] 앱 스토어 연결 오류 (0) | 2018.09.06 |
CNContactViewController 유의사항? (0) | 2018.04.14 |
swift 접근 제한자 (0) | 2018.04.09 |
Firebase 로그 Off (0) | 2018.04.05 |
Comments