한글/영문/숫자 순으로 정렬하기.
var section1 = ["100","1","a","나","ㄱ","2","k","ㅎ","10","가"] let order = section1.sort() { (s1, s2) -> Bool in
if(s1 < "A" && s2 < "A") { // 둘 다 숫자이면 return s1.localizedStandardCompare(s2) == NSComparisonResult.OrderedAscending
} else if (s1 >= "A" && s2 >= "A" && s1 <= "z" && s2 <= "z") { // 둘다 영문이면 return s1.localizedStandardCompare(s2) == NSComparisonResult.OrderedAscending } else if(s1 > "z" && s2 > "z") { // 둘 다 한글 이면 return s1.localizedStandardCompare(s2) == NSComparisonResult.OrderedAscending } else { //둘 중에 하나라도 같은 타입이 아니면 return s1.localizedStandardCompare(s2) == NSComparisonResult.OrderedDescending } } |
위 빨간색으로 칠한 문은 지역로컬이 지정되지 않아 무조건 영문이 우선순위로 소팅이 될 것이다.
한글부터 sort하고 자 한다면 이렇게 하자.
let locale = NSLocale(localeIdentifier: "korea") return s1.compare(s2, locale: locale) == NSComparisonResult.OrderedDescending |