한글/영문/숫자 순으로 정렬하기.

2016. 8. 29. 17:41Programming/Swift

반응형

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 


반응형