2015-03-25 10 views
21

Czy istnieje funkcja, która zamienia na wielkie litery każdego słowa w ciągu znaków lub czy jest to proces ręczny?Jak zamieniać na wielkie litery każdego słowa w ciągu znaków, używając Swift iOS

Dla np. "Bob jest wysoki" I chciałbym "Bob jest wysoki"

Z pewnością jest coś i żadna z odpowiedzi Swift IOS, które znalazłem, nie wydawała się tego obejmować.

+0

var someString = "lol"; someString.capitalized // "Lol" – Alexander

+0

Kilka innych wyszczególniło tę opcję poniżej. ;) –

Odpowiedz

33

Szukasz capitalizedString

Dyskusja
Łańcuch z pierwszego znaku w każdym słowie zmieniona na jego odpowiednia wielka litera, a wszystkie pozostałe znaki są ustawione na odpowiadające im małe litery.

i/lub capitalizedStringWithLocale(_:)

Zwraca aktywowane, przedstawienie odbiornika, przy użyciu określonego lokalizacyjnych.

W przypadku ciągów prezentowanych użytkownikom należy podać bieżące ustawienia narodowe ([NSLocale currentLocale]). Aby użyć ustawień regionalnych systemu, należy podać wartość nil.

+0

Nie próbowałem capitalizedStringWithLocale, więc będę grać z nim i komentarz w ciągu kilku minut. –

+1

Dzięki. Okazuje się, że szybki przykład na dokumentach Apple był pomylony, co rzuciło mnie na pętlę (w przenośni). –

3

Tam jest wbudowany w funkcji dla tego

nameOfString.capitalizedString 

będzie to wykorzystać każde słowo z łańcucha. Aby wykorzystać tylko pierwszą literę można użyć:

nameOfString.replaceRange(nameOfString.startIndex...nameOfString.startIndex, with: String(nameOfString[nameOfString.startIndex]).capitalizedString) 

Older Thread

+0

Próbowałem tego i to nie działało dla mnie. Po prostu wydawało się, że obejmuje tylko pierwsze słowo. Znalazłem wątek, który to zalecił. –

0

Oto, co wymyśliłem, co wydaje się działać, ale jestem otwarty na wszystko, co jest lepsze.

func firstCharacterUpperCase(sentenceToCap:String) -> String { 

    //break it into an array by delimiting the sentence using a space 
    var breakupSentence = sentenceToCap.componentsSeparatedByString(" ") 
    var newSentence = "" 

    //Loop the array and concatinate the capitalized word into a variable. 
    for wordInSentence in breakupSentence { 
     newSentence = "\(newSentence) \(wordInSentence.capitalizedString)" 
    } 

    // send it back up. 
    return newSentence 
} 

lub jeśli chcę użyć tego jako rozszerzenia klasy ciągów.

extension String { 
var capitalizeEachWord:String { 
    //break it into an array by delimiting the sentence using a space 
    var breakupSentence = self.componentsSeparatedByString(" ") 
    var newSentence = "" 

    //Loop the array and concatinate the capitalized word into a variable. 
    for wordInSentence in breakupSentence { 
     newSentence = "\(newSentence) \(wordInSentence.capitalizedString)" 
    } 

    // send it back up. 
    return newSentence 
} 
} 

Znowu wszystko, co lepsze, jest mile widziane.

8

Przykład odpowiedzi przedstawionej powyżej.

var sentenceToCap = "this is a sentence." 
println(sentenceToCap.capitalizedStringWithLocale(NSLocale.currentLocale()) ) 

wynik końcowy jest ciągiem „To jest zdanie”

12

Od iOS 9 funkcja zlokalizowane kapitalizacja jest dostępny jako wielkich liter mogą różnić się w językach.

if #available(iOS 9.0, *) { 
    "istanbul".localizedCapitalizedString 
    // In Turkish: "İstanbul" 
} 
8

Dla Swift 3 została ona zmieniona na capitalized.

Dyskusja
Ta właściwość prowadzi kanonicznej (niezlokalizowany) mapowanie. Jest odpowiedni do programowania operacji, które wymagają stabilnych wyników, nie zależnie od bieżących ustawień regionalnych. Łańcuch pisany wielkimi literami jest łańcuchem znaków, którego pierwszy znak w każdym słowie został zmieniony na odpowiadającą mu wielką literę, a wszystkie pozostałe znaki są ustawione na odpowiadające im małe litery. "Słowo" to dowolna sekwencja znaków rozdzielana spacjami, znakami tabulacji lub liniowymi znakami końca linii (wymienionymi w punkcie getLineStart (_: end: contentsEnd: for :)). Niektóre pospolite wyrazy interpunkcyjne nie są brane pod uwagę, więc ta właściwość może nie generować pożądanych wyników dla ciągów wielostanowych. Transformacje skrzynek nie gwarantują symetryczności ani tworzenia ciągów o takiej samej długości jak oryginały. Zobacz przykład dla małych liter.

6

Swift 3:

var lowercased = "hello there" 

var stringCapitalized = lowercased.capitalized 
//prints: "Hello There" 
Powiązane problemy