Быстрый.верхний регистр или.замена свойства lowercaseString
Так как строки в Swift больше не имеют .верхний регистр или .доступны свойства lowercaseString, как я могу выполнить эту функцию?
Если у меня к примеру:
var sillyString = "This is a string!"
let yellyString = sillyString.uppercaseString
let silentString = sillyString.lowercaseString
Я хотел бы взять sillyString и мутировать его в верхний или нижний регистр. Как бы я теперь это сделал?
спасибо заранее!
4 ответа:
Xcode 6.0 / Swift 1.0
String
легко соединяется сNSString
, Так что тут естьuppercaseString
иlowercaseString
свойства пока выimport Foundation
(или действительно почти любой фреймворк, так как они обычноimport Foundation
внутренне. Из раздел строк и символов руководства по программированию Swift:строковый тип Swift легко соединяется с NSString Foundation класс. Если вы работаете с рамками учредительства в какао или Cocoa Touch, весь API NSString доступен для вызова любого Строковое значение, которое вы создаете, в дополнение к описанным строковым функциям в этой главе. Вы также можете использовать строковое значение с любым API, который требуется экземпляр NSString.
Xcode 6.1 / Swift 1.1
как указал @newacct, в Xcode 6.1 / Swift 1.1,
uppercaseString
иlowercaseString
are у Свифта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!
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!
Swift 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"
нестыковки: .способ() против .собственность
обратите внимание на нечетное расхождение, где прописные() и строчные() являются функциями, а заглавные-это свойство. Это похоже на оплошность, и в этом случае, надеюсь, кто-то комфортно с быстрой эволюцией процесс внесет коррекцию до того, как 3.0 выйдет из бета-версии.
если случится знать, что вы работаете с 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
инициализатор локали имеет немного более длинное имя параметра в Swift 3...
turkishI.uppercased(with: Locale(localeIdentifier: "en"))
Светлый Юмор
"✈️".uppercased() //
The
uppercaseString
иlowercaseString
свойстваString
больше не находятся в стандартной библиотеке Swift. Вместо этого,Foundation
обеспечивает их сейчас. Так что вы должныimport Foundation
использовать его.
вот функция из Apple Docs для 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