import Foundation
func solution(_ new_id:String) -> String {
var tmp = new_id.lowercased()
var restrict = "~!@#$%^&*()=+[{]}:?,<>/"
var new = tmp.filter{
if restrict.contains($0){
return false
}
else {return true}
}
// print("fds")
// print(new)
var result = new
var zeroBool = false
var count = 0
var jjumArray = [Int]()
result.enumerated().forEach{
if $0.element == Character(".") {
count += 1
}
else { count = 0}
if count >= 2 {
jjumArray.append($0.offset)
}
}
//print(jjumArray)
var arrayTmp = Array(result)
for i in jjumArray{
arrayTmp[i] = Character(" ")
}
//arrayTmp = arrayTmp.map{Character($0)}
//var arrChar = Array<Character>()
arrayTmp.removeAll{$0 == " "}
// print("sd")
// print(arrayTmp)
if arrayTmp.count >= 1 {
if arrayTmp.first! == "." {arrayTmp.removeFirst()}
}
if arrayTmp.count >= 1 {
if arrayTmp.last! == "." {arrayTmp.removeLast()}
}
if arrayTmp.count == 0 {arrayTmp.append("a")}
if arrayTmp.count >= 16 {
arrayTmp = Array(arrayTmp[0..<15])
}
if arrayTmp.last! == "." {arrayTmp.removeLast()}
if arrayTmp.count <= 2 {
//let lastVal = arrayTmp.last!
arrayTmp.append(arrayTmp.last!)
}
if arrayTmp.count <= 2 {
//let lastVal = arrayTmp.last!
arrayTmp.append(arrayTmp.last!)
}
// print(String(arrayTmp))
//print(arrayTmp.first,arrayTmp.last)
return String(arrayTmp)
}
깨달은것: remove할 때는 array또는 string의 개수가 0 이아닌지 확인해야한다. array[0..<15]의 타입은 sliceArray이다. 따라서 array로 고쳐야했다..
string함수: hasPrefix,hasSuffix -> 어레이 함수의 last!보다 안전하다.