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

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

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

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

간단하니 바로 시작!


1. pathExtension 활용

💡 pathExtension

  • path에서 확장자 추출하기 iOS 2.0 이상 (Playground에서 테스트 했습니다.)
  • 테스트 문자열들 : ["At_로그인.mov", "At_로그인.mov.mov", "At_로그인.MOV", "At_로그인.Mov", "At_.최종.mov", "At_.MOV.최종.mov"]

결과 : At_로그인, At_.최종, At_.MOV.최종

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중으로 체크해야하는 일이 많아지네요

오늘은 이만~

즐거운 코딩 되게요.

끝.

댓글