Skip to content

Instantly share code, notes, and snippets.

@ptrkstr
Forked from reitzig/Camelizer.swift
Created October 13, 2021 02:56
Show Gist options
  • Select an option

  • Save ptrkstr/5787a235037b9d2a38191326cbe60b8b to your computer and use it in GitHub Desktop.

Select an option

Save ptrkstr/5787a235037b9d2a38191326cbe60b8b to your computer and use it in GitHub Desktop.

Revisions

  1. @reitzig reitzig created this gist Feb 22, 2018.
    24 changes: 24 additions & 0 deletions Camelizer.swift
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    fileprivate let badChars = CharacterSet.alphanumerics.inverted

    extension String {
    var uppercasingFirst: String {
    return prefix(1).uppercased() + dropFirst()
    }

    var lowercasingFirst: String {
    return prefix(1).lowercased() + dropFirst()
    }

    var camelized: String {
    guard !isEmpty else {
    return ""
    }

    let parts = self.components(separatedBy: badChars)

    let first = String(describing: parts.first!).lowercasingFirst
    let rest = parts.dropFirst().map({String($0).uppercasingFirst})

    return ([first] + rest).joined(separator: "")
    }
    }