Быстрый.верхний регистр или.замена свойства lowercaseString


Так как строки в Swift больше не имеют .верхний регистр или .доступны свойства lowercaseString, как я могу выполнить эту функцию?

Если у меня к примеру:

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

Я хотел бы взять sillyString и мутировать его в верхний или нижний регистр. Как бы я теперь это сделал?

спасибо заранее!

4 54

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