[Swift] 첨부파일명 (이름+확장자) 분리하기



# [Swift] 첨부파일명 (이름+확장자) 분리하기 

안녕하세요 __물먹고하자__ 입니다 :)
회사 일중에 원래 첨부파일을 전달받을때 __"이름", "확장자"__ 이렇게 따로 받기로 되어있는데,
간혹 "이름"에 확장자까지 들어가 있는경우가 있어서 예외처리를 하려고 합니다.

오늘은 __String 첨부파일 이름, 확장자 분리작업__ 부분 공유드립니다.

간단하니 바로 시작!

---
## 1. pathExtension 활용
> 💡 <a href="https://developer.apple.com/documentation/foundation/nsstring/1407801-pathextension" target="_blank">pathExtension</a>
- path에서 확장자 추출하기 iOS 2.0 이상 __(Playground에서 테스트 했습니다.)__
- 테스트 문자열들 : __["At_로그인.mov", "At_로그인.mov.mov", "At_로그인.MOV", "At_로그인.Mov", "At_.최종.mov", "At_.MOV.최종.mov"]__
>> __결과 : At_로그인, At_.최종, At_.MOV.최종__

``` swift
import Foundation

func extractFileName(from fileName: String, withExtension ext: String) -> String {
    // 지정된 확장자를 소문자로 변환
    let targetExtension = ext.lowercased()
    var baseName = fileName
    var fileExtension = (baseName as NSString).pathExtension.lowercased()
    
    // 지정된 확장자와 일치하면 반복적으로 확장자를 제거
    while fileExtension == targetExtension {
        baseName = (baseName as NSString).deletingPathExtension
        fileExtension = (baseName as NSString).pathExtension.lowercased()
    }
    
    return baseName
}

// 테스트 케이스
let fileName1 = "At_로그인.mov"
let fileName2 = "At_로그인.mov.mov"
let fileName3 = "At_로그인.MOV"
let fileName4 = "At_로그인.Mov"
let fileName5 = "At_.최종.mov"
let fileName6 = "At_.MOV.최종.mov"

let printArray = [fileName1, fileName2, fileName3, fileName4, fileName5, fileName6]

printArray.forEach {
    print(extractFileName(from: $0, withExtension: "mov"))
}

```

---
## 마무리
테스트 했을때 __이름에 .이 들어간 경우__ (물론.. 이상한 케이스임) 테스트 하였고,
위에 처음 지정된 확장자일때(대소문자확인) 그부분만 제거하도록 코드를 구성하였습니다.

앱 운영하다보면 언제나(?) 예상밖인 부분이 워낙 많다 보니 
개발자가 2중으로 체크해야하는 일이 많아지네요

오늘은 이만~

즐거운 코딩 되게요.

끝.


댓글