Skip to content

Instantly share code, notes, and snippets.

@ayanonagon
Created November 29, 2016 21:29
Show Gist options
  • Save ayanonagon/7bc27904ae09009556ade89c98f3242b to your computer and use it in GitHub Desktop.
Save ayanonagon/7bc27904ae09009556ade89c98f3242b to your computer and use it in GitHub Desktop.
s_n_a_k_e_c_a_s_e_d
import Foundation
extension String {
func s_n_a_k_e_c_a_s_e_d() -> String { // OK, you can name it just “snakecased” if you prefer… :)
var charactersToRemove = CharacterSet.alphanumerics.inverted
charactersToRemove.remove(charactersIn: " ")
let result = components(separatedBy: charactersToRemove).joined(separator: "")
return result.replacingOccurrences(of: " ", with: "_").lowercased()
}
}
"Hello world".s_n_a_k_e_c_a_s_e_d() // "hello_world"
"Hello! World!".s_n_a_k_e_c_a_s_e_d() // "hello_world"
"I am snake cased".s_n_a_k_e_c_a_s_e_d() // "i_am_snake_cased"
"s n a k e c a s e d".s_n_a_k_e_c_a_s_e_d() // "s_n_a_k_e_c_a_s_e_d"
// This implementation strips out everything but alphanumerics
// but can be modified for your desired behavior!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment