gpt4 book ai didi

ios - 在 Swift 中将 CamelCase 字符串分隔为空格分隔的单词

转载 作者:IT王子 更新时间:2023-10-29 05:32:42 25 4
gpt4 key购买 nike

我想将 CamelCase 字符串分隔成新字符串中以空格分隔的单词。这是我目前所拥有的:

var camelCaps: String {
guard self.count > 0 else { return self }
var newString: String = ""

let uppercase = CharacterSet.uppercaseLetters
let first = self.unicodeScalars.first!
newString.append(Character(first))
for scalar in self.unicodeScalars.dropFirst() {
if uppercase.contains(scalar) {
newString.append(" ")
}
let character = Character(scalar)
newString.append(character)
}

return newString
}

let aCamelCaps = "aCamelCaps"
let camelCapped = aCamelCaps.camelCaps // Produce: "a Camel Caps"

let anotherCamelCaps = "ÄnotherCamelCaps"
let anotherCamelCapped = anotherCamelCaps.camelCaps // "Änother Camel Caps"

我倾向于怀疑,如果我在紧密循环或 1000 次中调用它,这可能不是转换为空格分隔词的最有效方法。在 Swift 中是否有更有效的方法来做到这一点?

[编辑 1:] 我需要的解决方案应该对 Unicode 标量保持通用,而不是特定于罗马 ASCII“A..Z”。

[编辑 2:] 解决方案还应该跳过第一个字母,即不在第一个字母前添加空格。

[编辑 3:] 针对 Swift 4 语法进行了更新,并添加了大写字母的缓存,这提高了非常长的字符串和紧密循环的性能。

最佳答案

extension String {
func camelCaseToWords() -> String {
return unicodeScalars.dropFirst().reduce(String(prefix(1))) {
return CharacterSet.uppercaseLetters.contains($1)
? $0 + " " + String($1)
: $0 + String($1)
}
}
}
print("ÄnotherCamelCaps".camelCaseToWords()) // Änother Camel Caps

可能对某人有帮助:)

关于ios - 在 Swift 中将 CamelCase 字符串分隔为空格分隔的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41292671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com