Swift .uppercaseString或.lowercaseString属性replace

由于在Swift中的string不再具有.uppercaseString或.lowercaseString属性可用,我将如何去执行该function?

如果我有例如:

var sillyString = "This is a string!" let yellyString = sillyString.uppercaseString let silentString = sillyString.lowercaseString 

我想采取sillyString并将其变为大写或小写。 我现在要怎么做呢?

提前致谢!

Xcode 6.0 / Swift 1.0

String被无缝桥接到NSString ,所以只要你import Foundation (或者几乎任何框架,因为他们通常会在内部import Foundation ,所以它具有uppercaseStringlowercaseString属性。从Swift编程指南的string和字符部分 :

Swift的Stringtypes无缝桥接到Foundation的NSString类。 如果您正在使用Cocoa或Cocoa Touch中的Foundation框架,则除了本章中介绍的stringfunction之外,还可以使用整个NSString API调用您创build的任何string值。 您也可以使用任何需要NSString实例的API来使用String值。


Xcode 6.1 / Swift 1.1

正如@newacct所指出的那样,在Xcode 6.1 / Swift 1.1中, uppercaseStringlowercaseString在Swift的String类中,所以你不需要使用在NSString定义的那些。 但是,它是作为Foundation框架中String类的扩展实现的,所以解决scheme仍然是一样的: import Foundation

在操场上:

 import Foundation var sillyString = "This is a string!" // --> This is a string! let yellyString = sillyString.uppercaseString // --> THIS IS A STRING! let silentString = sillyString.lowercaseString // --> this is a string! 

Swift 3.0

在操场上:

 import Foundation var sillyString = "This is a string!" // --> This is a string! let yellyString = sillyString.uppercased() // --> THIS IS A STRING! let silentString = sillyString.lowercased() // --> this is a string! 

斯威夫特4

TL; DR

Swift 3中的新名称使用-ed后缀来表示uppercased()lowercased()返回一个副本而不是一个修改过的原始文件:

 import Foundation let title = "Castration: The Advantages and the Disadvantages" // Don't `var` unless you have to! title.uppercased() // "CASTRATION: THE ADVANTAGES AND THE DISADVANTAGES" title.lowercased() // "castration: the advantages and the disadvantages" title.capitalized // "Castration: The Advantages And The Disadvantages" 

不一致:.method()与.property

注意uppercased()和lowercased()是函数的奇数差异,而大写是一个属性。 这看起来像是一个疏忽,在这种情况下,希望有一个适应迅速演化过程的人会在3.0 beta之前进行修正。

如果碰巧知道你正在使用NSString,那么一个属性可用于所有三个:

 NSString(string: "abcd").uppercased NSString(string: "ABCD").lowercased NSString(string: "abCd").capitalized 

语言很难

上面的方法隐藏了NSString和CFString的方法委托的整个string,默认的Locale为nil。 这在大多数情况下是有效的。 至less,这是英文。 事实上,我真的不知道我要从我的操场上粘贴什么东西。

 let turkishI = "\u{0130} is not I" // "İ is not I" turkishI.uppercased() // "İ IS NOT I" turkishI.uppercased(with: Locale(identifier: "en")) // "İ IS NOT I" turkishI.uppercased(with: Locale(identifier: "tr")) // "İ İS NOT I" turkishI.lowercased() // "i̇ is not i" turkishI.capitalized // "İ Is Not I" turkishI.lowercased(with: Locale(identifier: "en")) // "i̇ is not i" turkishI.lowercased(with: Locale(identifier: "tr")) // "i is not ı" 

Swift 3

语言环境初始值设定项在Swift 3中的参数名称稍长

 turkishI.uppercased(with: Locale(localeIdentifier: "en")) 

轻幽默

 "✈️".uppercased() // 🚀 

String上的uppercaseStringlowercaseString属性不在Swift标准库中。 相反, Foundation现在提供他们。 所以你必须

 import Foundation 

使用它。

下面是来自Apple Docs for Xcode8 / Swift3的function:

 /// Returns a lowercase version of the string. /// /// Here's an example of transforming a string to all lowercase letters. /// /// let cafe = "Café 🍵" /// print(cafe.lowercased()) /// // Prints "café 🍵" /// /// - Returns: A lowercase copy of the string. /// /// - Complexity: O(*n*) public func lowercased() -> String