-
-
Save stevenschobert/540dd33e828461916c11 to your computer and use it in GitHub Desktop.
func camelCaseString(source: String) -> String { | |
if contains(source, " ") { | |
let first = source.substringToIndex(advance(source.startIndex, 1)) | |
let cammel = NSString(format: "%@", (source as NSString).capitalizedString.stringByReplacingOccurrencesOfString(" ", withString: "", options: nil, range: nil)) as String | |
let rest = dropFirst(cammel) | |
return "\(first)\(rest)" | |
} else { | |
let first = (source as NSString).lowercaseString.substringToIndex(advance(source.startIndex, 1)) | |
let rest = dropFirst(source) | |
return "\(first)\(rest)" | |
} | |
} | |
camelCaseString("os version") | |
camelCaseString("HelloWorld") | |
camelCaseString("someword With Characters") |
extension String { | |
var camelCasedString: String { | |
let source = self | |
if contains(source, " ") { | |
let first = source.substringToIndex(advance(source.startIndex, 1)) | |
let cammel = NSString(format: "%@", (source as NSString).capitalizedString.stringByReplacingOccurrencesOfString(" ", withString: "", options: nil, range: nil)) as String | |
let rest = dropFirst(cammel) | |
return "\(first)\(rest)" | |
} else { | |
let first = (source as NSString).lowercaseString.substringToIndex(advance(source.startIndex, 1)) | |
let rest = dropFirst(source) | |
return "\(first)\(rest)" | |
} | |
} | |
} | |
"os version".camelCasedString | |
"HelloWorld".camelCasedString | |
"someword With Characters".camelCasedString |
Swift 2.2 Version without NSString
extension String {
var camelcaseString: String {
let source = self
if source.characters.contains(" ") {
let first = source.substringToIndex(source.startIndex.advancedBy(1))
let cammel = source.capitalizedString.stringByReplacingOccurrencesOfString(" ", withString: "")
let rest = String(cammel.characters.dropFirst())
return "\(first)\(rest)"
} else {
let first = source.lowercaseString.substringToIndex(source.startIndex.advancedBy(1))
let rest = String(source.characters.dropFirst())
return "\(first)\(rest)"
}
}
}
Hi,
Thanks for this !
Just a small remark, it doesn't works as expected on uppercase string.EXAMPLE
will be printed as eXAMPLE
.
So I've updated it like that:
extension String {
var camelcaseStringLowerCase: String {
let source = self
if source.characters.contains(" ") {
let first = source.substringToIndex(source.startIndex.advancedBy(1))
let cammel = source.capitalizedString.stringByReplacingOccurrencesOfString(" ", withString: "")
let rest = String(cammel.characters.dropFirst())
return "\(first)\(rest)"
} else {
let first = source.lowercaseString.substringToIndex(source.startIndex.advancedBy(1))
let rest = String(source.characters.dropFirst())
return "\(first)\(rest)"
}
}
var camelcaseStringUpperCase: String {
let source = self
if source.characters.contains(" ") {
let first = source.lowercaseString.substringToIndex(source.startIndex.advancedBy(1))
let rest = String(source.characters.dropFirst())
return "\(first)\(rest)"
} else {
let first = source.substringToIndex(source.startIndex.advancedBy(1))
let cammel = source.capitalizedString.stringByReplacingOccurrencesOfString(" ", withString: "")
let rest = String(cammel.characters.dropFirst())
return "\(first)\(rest)"
}
}
}
Regards,
vIVIEN
Updated for Swift 3/4
func capitalizingFirstLetter() -> String {
return prefix(1).uppercased() + dropFirst()
}
var camelCasedString: String {
return self.components(separatedBy: " ")
.map { return $0.lowercased().capitalizingFirstLetter() }
.joined()
}
Swift 5
I have a rather distinct feeling this can be done more efficiently, but at least this works:
extension String {
func capitalizingFirstLetter() -> String {
return prefix(1).uppercased() + dropFirst()
}
var upperCamelCased: String {
return self.lowercased()
.split(separator: " ")
.map { return $0.lowercased().capitalizingFirstLetter() }
.joined()
}
var lowerCamelCased: String {
let upperCased = self.upperCamelCased
return upperCased.prefix(1).lowercased() + upperCased.dropFirst()
}
}
For those that got a bit confused about the difference between upperCamelCased
and lowerCamelCased
. upper is PascalCasing, and lower is camelCasing. @Gatada Thanks for the snippet!
PascalCasing - did not know that term, thanks. So that would mean pascalCased, right?
@Gatada it's exactly like @MadsBogeskov wrote it.
Pascal Casing = PascalCasing
Camel Casing = camelCasing
@Gatada it's exactly like @MadsBogeskov wrote it.
Pascal Casing = PascalCasing
Camel Casing = camelCasing
Hehe, yeah, in retrospect I see how my reply was confusing. I was referring to the method name, not the formatting.
swift 2.1 version