How to extract a file name from a path, replace whitespaces, and make it lowercase using RegEx in Swift

1 Answer

0 votes
import Foundation

func normalizeFilename(_ filePath: String) -> String {
    // Create regular expression to extract the file name
    let pattern = #"^.*[\\/](.*)$"#
    let regex = try! NSRegularExpression(pattern: pattern, options: [])

    let nsrange = NSRange(filePath.startIndex..<filePath.endIndex, in: filePath)
    let match = regex.firstMatch(in: filePath, options: [], range: nsrange)

    let filename: String
    if let match = match, let range = Range(match.range(at: 1), in: filePath) {
        filename = String(filePath[range])
    } else {
        filename = filePath
    }

    let normalized = filename.replacingOccurrences(of: " ", with: "_").lowercased()
    
    return normalized
}

let filePath = #"c:\path\to\file\WITH Whitespace1 and Whitespace2.swift"#
let result = normalizeFilename(filePath)

print(result)



/*
run:

with_whitespace1_and_whitespace2.swift

*/

 



answered Jul 16, 2025 by avibootz
...