我试图对驼峰的情况进行简单的冲刺,所以:"这是我的身份"将成为swift 3(或4)中的"thisIsMyId".
无论我做什么,我找不到一个优雅的方式来做到这一点..:以下不起作用:
str.split(separator: "-").enumerated().map { (index, element) in
return index > 0 ? element.capitalized : element
}.reduce("", +)
Run Code Online (Sandbox Code Playgroud)
它哭泣所有的东西.我相信有一个简单的方法......任何人?
你的代码几乎是正确的.以下是我发现的最易读的实现:
let str: String = "this-is-my-id"
let result = str
.split(separator: "-") // split to components
.map { String($0) } // convert subsequences to String
.enumerated() // get indices
.map { $0.offset > 0 ? $0.element.capitalized : $0.element.lowercased() } // added lowercasing
.joined() // join to one string
print(result)
Run Code Online (Sandbox Code Playgroud)
只是用 Swift 4.1 更好地实现了@sulthan 的答案。
extension String {
func camelCased(with separator: Character) -> String {
return self.lowercased()
.split(separator: separator)
.enumerated()
.map { $0.offset > 0 ? $0.element.capitalized : $0.element.lowercased() }
.joined()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1864 次 |
| 最近记录: |