必要に迫られて、変換する処理を書いたのでメモ。
何か他に良い方法があれば教えてください。
extension String {
func snake2camel() -> String {
return self
.components(separatedBy: "_")
.enumerated()
.map {0 == $0 ? $1 : $1.capitalized}
.joined()
}
func camel2snake() -> String {
return self.replacingOccurrences(of: "([A-Z])",
with: "_$1",
options: .regularExpression,
range: self.startIndex ..< self.endIndex).lowercased()
}
}
こんな感じで使えます。
let camel = "snake_case_to_camel_case"
print("\(camel.snake2camel())") // snakeCaseToCamelCase
let snake = "camelCaseToSnakeCase"
print("\(snake.camel2snake())") // camel_case_to_snake_case
謝辞
(2017/03/24 17:00 追記)
fuzzballさんがコメントしてくださった内容に更新しました。ありがとうございます!
黒歴史
|ω・)...一応、変更前も晒しておくスタイル
extension String {
func snake2camel() -> String {
var ressult = ""
let items = self.components(separatedBy: "_")
items.enumerated().forEach {
ressult += 0 == $0 ? $1 : $1.capitalized
}
return ressult
}
func camel2snake() -> String {
return self.replacingOccurrences(of: "([a-z])([A-Z])",
with: "$1_$2",
options: .regularExpression,
range: self.startIndex ..< self.endIndex).lowercased()
}
}