티스토리 뷰

Coding

Swift. Snake -> Camel, Camel -> Snake

out of coding 2023. 2. 18. 20:00

최근 Clojure 를 다루면서 function name 을 -> 이것을 넣어서 만들수 있었는데 조금 아쉽긴하네요.

snake->camel 이런 이름으로 만드는건 좀 가독성이 좋은뎁 ㅎㅎ

 

암튼 다음과 같이 만들어 봤어요.

struct Coding {
    func snakeToCamel(from input: String) -> String {
        if input.isEmpty { return "" }

        let split = input
            .split(separator: "_")
            .enumerated()
            .map { $0.0 == 0 ? $0.1.lowercased() : $0.1.capitalized }

        return split.joined()
    }  
  
    func camelToSnake(from input: String) -> String {
        let pattern = "([a-z0-9])([A-Z])"
        guard let regex = try? NSRegularExpression(pattern: pattern, options: []) else {
            return ""
        }
        
        let range = NSRange(location: 0, length: input.utf16.count)
        let result = regex.stringByReplacingMatches(in: input,
                                                    options: [],
                                                    range: range,
                                                    withTemplate: "$1_$2")
        return result.lowercased()
    }
}

snake->camel은 split 방식으로

camel->snake는 regex로

 

아래는 소스

https://github.com/mrgamza-playground/snakeCamelConverter

 

GitHub - mrgamza-playground/snakeCamelConverter: Snake -> Camel, Camel -> Snake

Snake -> Camel, Camel -> Snake. Contribute to mrgamza-playground/snakeCamelConverter development by creating an account on GitHub.

github.com

 

'Coding' 카테고리의 다른 글

Python3. lotto 발생기  (0) 2021.04.02
Algorithm. permutation 순회  (0) 2020.12.28
Dynamic Programming  (0) 2020.12.19
Node.js - 구구단  (0) 2020.09.03
Ruby. Gugudan  (0) 2020.08.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함