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
,所以它具有uppercaseString
和lowercaseString
属性。从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中, uppercaseString
和lowercaseString
在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
上的uppercaseString
和lowercaseString
属性不在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