Swift .uppercaseString或.lowercaseString属性替换

时间:2014-10-07 21:28:54

标签: swift

由于Swift中的Strings不再具有.uppercaseString或.lowercaseString属性,我将如何执行该功能?

如果我有例如:

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

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

提前致谢!

5 个答案:

答案 0 :(得分:109)

Xcode 6.0 / Swift 1.0

StringNSString无缝桥接,只要您{{>> <{1}}和uppercaseString属性 1}} (或几乎任何框架,因为他们通常lowercaseString内部。来自Swift编程指南的Strings and Characters section

  

Swift的String类型与Foundation的NSString无缝桥接   类。如果您正在使用Cocoa中的Foundation框架   Cocoa Touch,整个NSString API可以调用任何   除了描述的String功能外,您创建的字符串值   在这一章当中。您还可以将String值与任何API一起使用   需要一个NSString实例。


Xcode 6.1 / Swift 1.1

正如@newacct指出的那样,在Xcode 6.1 / Swift 1.1中,import Foundationimport Foundation 在Swift的uppercaseString课程,所以你不要#39; t需要使用lowercaseString中定义的那些。但是,它已作为String框架中NSString类的扩展实现,因此解决方案仍然相同:String

在操场上:

Foundation

Swift 3.0

在操场上:

import Foundation

答案 1 :(得分:76)

Swift 4&amp; 5

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()vs .property

注意奇数差异,其中up​​percased()和lowercased()是函数,而大写是一个属性。这似乎是一种疏忽,在这种情况下,希望有一些对快速进化过程感到满意的人会在3.0离开beta之前进行修正。

如果您知道自己正在使用NSString,则 属于所有三个属性:

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

语言很难

上述方法将整个方法委派字符串隐藏为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 ı"

Swift 3

Locale初始值设定项在Swift 3中的参数名称稍长......

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

轻幽默

"✈️".uppercased()  //  (Swift 4)
"✈️".uppercased()  //  (Swift 5)

答案 2 :(得分:13)

uppercaseString上的lowercaseStringString属性不再位于Swift标准库中。相反,Foundation现在提供它们。所以你必须

import Foundation

使用它。

答案 3 :(得分:0)

来自Apple Docs for Xcode8 / Swift3的功能:

/// 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

答案 4 :(得分:0)

SwiftUI解决方案

SwiftUI中将字符串大写的解决方案

Text("Hello World!".uppercased())

输出为:“ HELLO WORLD!”


要小写字符串,只需使用此

Text("Hello World!".lowercased())

输出为:“你好,世界!”