由于Swift中的Strings不再具有.uppercaseString或.lowercaseString属性,我将如何执行该功能?
如果我有例如:
var sillyString = "This is a string!"
let yellyString = sillyString.uppercaseString
let silentString = sillyString.lowercaseString
Run Code Online (Sandbox Code Playgroud)
我想采取sillyString并将其变为大写或小写.我现在该怎么做呢?
提前致谢!
Mik*_*e S 109
String是无缝桥接NSString,所以它确实具有uppercaseString和lowercaseString属性,只要你import Foundation(或几乎任何框架,因为它们通常在import Foundation内部.从Swift编程指南的字符串和字符部分:
Swift的String类型与Foundation的NSString类无缝桥接.如果您在Cocoa或Cocoa Touch中使用Foundation框架,除了本章中描述的String功能外,整个NSString API还可用于调用您创建的任何String值.您还可以将String值与任何需要NSString实例的API一起使用.
作为@newacct指出,在Xcode 6.1/1.1斯威夫特,uppercaseString以及lowercaseString 是在斯威夫特的String类,所以你不需要使用中定义的相符NSString.但是,它是作为框架中String类的扩展实现的,Foundation因此解决方案仍然是相同的: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!
Run Code Online (Sandbox Code Playgroud)
在操场上:
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!
Run Code Online (Sandbox Code Playgroud)
clo*_*ach 76
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"
Run Code Online (Sandbox Code Playgroud)
注意奇数差异,其中uppercased()和lowercased()是函数,而大写是一个属性.这似乎是一种疏忽,在这种情况下,希望有一些对快速进化过程感到满意的人会在3.0离开beta之前进行修正.
如果碰巧知道你正在使用的NSString的工作,有是对所有三个可用的属性:
NSString(string: "abcd").uppercased
NSString(string: "ABCD").lowercased
NSString(string: "abCd").capitalized
Run Code Online (Sandbox Code Playgroud)
上面的方法将整个方法委派字符串隐藏到NSString和CFString,默认语言环境为nil.这大部分时间都有效.至少,它用英语.事实是,我真的不明白我要从操场上粘贴的剩余部分.
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 ?"
Run Code Online (Sandbox Code Playgroud)
Locale初始化程序在Swift 3中的参数名称略长......
turkishI.uppercased(with: Locale(localeIdentifier: "en"))
Run Code Online (Sandbox Code Playgroud)
"??".uppercased() // (Swift 4)
"??".uppercased() // (Swift 5)
Run Code Online (Sandbox Code Playgroud)
new*_*cct 13
在uppercaseString和lowercaseString对性能String的雨燕标准库都没有了.相反,Foundation现在提供它们.所以你必须这样做
import Foundation
Run Code Online (Sandbox Code Playgroud)
使用它.
| 归档时间: |
|
| 查看次数: |
58957 次 |
| 最近记录: |