【发布时间】:2017-03-14 08:44:48
【问题描述】:
我想将字符串中每个句子的第一个单词大写。例如这个字符串:
apple Park 将运行最大的现场太阳能之一 世界上的装置。它也是世界上最大的 自然通风的建筑。
应该变成:
Apple Park 将运行最大的现场太阳能之一 世界上的装置。它也是世界上最大的网站 自然通风的建筑。
我也希望当一个世界的字符中已经有一个大写字母时不会发生大写,例如:
iPad 是一种移动设备。
遗迹
iPad 是一种移动设备。
对于这个任务的第一部分,我可以通过rintaro 使用这段代码:
let str = "someSentenceWith UTF text İŞğĞ. anotherSentenceğüÜğ"
var result = ""
str.uppercaseString.enumerateSubstringsInRange(str.characters.indices, options: .BySentences) { (sub, _, _, _) in
result += String(sub!.characters.prefix(1))
result += String(sub!.characters.dropFirst(1)).lowercaseString
}
print(result)
但它适用于 Swift 2,不适用于 Swift 3。
【问题讨论】:
-
@JamesWebster 哈哈,你明白了。
-
只需将您的 Swift 2 代码转换为 Swift 3 代码,它就可以工作(文档将为您提供新的方法名称)——它会像在 Swift 2 中一样工作(在每个句子中)它将第一个字母大写,其余字母小写,可能会在句子中丢失大写字母),但如果需要,您可以通过改进算法来解决这个问题。 HTH