정규 표현식으로 문제를 해결하면 쉽게 해결할 수 있게 됩니다

 

정규 표현식은 "[^a-z0-9-_.]" 으로 표현하게 된다면

a 부터 z 까지 소문자들을 포함하면서

0 부터 9 까지 숫자들을 포함하면서

- 하고 _ 그리고 . 을 포함한 것들을 제외한 것들을 "" 빈값으로 대체할 수 있게 됩니다.

import Foundation

func solution(_ new_id:String) -> String {
    var id = new_id
    id = id.lowercased()
    id = id.replacingOccurrences(of: "[^a-z0-9-_.]", with: "", options: .regularExpression)
    
    while id.contains("..") {
        id = id.replacingOccurrences(of: "..", with: ".")
    }
    
    if id.first == "." { id.removeFirst() }
    if id.last == "." { id.removeLast() }
    
    if id.isEmpty { id = "a" }
    id = String(id.prefix(15))
    
    if id.last == "." { id.removeLast() }
    while id.count < 3 {
        id.append(id.last!)
    }
    
    return id
}
ytw_developer