ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift 에서 휴대폰 번호 이쁘게 만들기
    Tech 2020. 5. 27. 21:52

    01012341234

    02123124

    158812312

     

    이런 숫자를 하이픈 넣어서 이쁘게 해주세요! 의 결과물

    사실 별건없다 인터넷에서 이것저것 주워온 정규식 짬뽕물.

    extension String {
        
        func pretty() -> String {
            let _str = self.replacingOccurrences(of: "-", with: "") // 하이픈 모두 빼준다
            let arr = Array(_str)
            
            if arr.count > 3 {
                let prefix = String(format: "%@%@", String(arr[0]), String(arr[1]))
                if prefix == "02" { // 서울지역은 02번호
                    
                    if let regex = try? NSRegularExpression(pattern: "([0-9]{2})([0-9]{3,4})([0-9]{4})", options: .caseInsensitive) {
                        let modString = regex.stringByReplacingMatches(in: _str, options: [],
                                                                       range: NSRange(_str.startIndex..., in: _str),
                                                                       withTemplate: "$1-$2-$3")
                        return modString
                    }
                    
                } else if prefix == "15" || prefix == "16" || prefix == "18" { // 썩을 지능망...
                    if let regex = try? NSRegularExpression(pattern: "([0-9]{4})([0-9]{4})", options: .caseInsensitive) {
                        let modString = regex.stringByReplacingMatches(in: _str, options: [],
                                                                       range: NSRange(_str.startIndex..., in: _str),
                                                                       withTemplate: "$1-$2")
                        return modString
                    }
                } else { // 나머지는 휴대폰번호 (010-xxxx-xxxx, 031-xxx-xxxx, 061-xxxx-xxxx 식이라 상관무)
                        if let regex = try? NSRegularExpression(pattern: "([0-9]{3})([0-9]{3,4})([0-9]{4})", options: .caseInsensitive) {
                            let modString = regex.stringByReplacingMatches(in: _str, options: [],
                                                                           range: NSRange(_str.startIndex..., in: _str),
                                                                           withTemplate: "$1-$2-$3")
                            return modString
                        }
                    }
                
            }
            
            return self
        }
    }

     

    사용법은

     

    "021231234".pretty() 

     

    끝.

     

    오늘도 열심히 살자!

     

    ㅠㅠ

     

    댓글

Designed by Tistory.