2015-03-25 8 views
21

Gibt es eine Funktion, um jedes Wort in einer Zeichenkette groß zu schreiben oder ist dies ein manueller Prozess?Wie man jedes Wort in einer Zeichenkette groß schreibt mit Swift iOS

Für z.B. "Bob ist groß" Und ich möchte "Bob ist groß"

Sicher gibt es etwas und keiner der Swift IOS Antworten, die ich gefunden habe, schien dies zu decken.

+0

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

+0

Ein paar andere beschreiben diese Option unten. ;) –

Antwort

33

Suchen Sie capitalizedString

Diskussion
Ein String mit dem ersten Zeichen in jedem Wort verändert seine der entsprechende Großbuchstabe und alle verbleibenden Zeichen werden auf die entsprechenden Kleinbuchstaben gesetzt.

und/oder capitalizedStringWithLocale(_:)

Gibt eine aktivierte Darstellung des Empfängers des angegebenen locale verwenden.

Für Strings, die Benutzern übergeben werden, übergeben Sie das aktuelle Gebietsschema ([NSLocale currentLocale]). Um das Systemgebietsschema zu verwenden, übergeben Sie nil.

+0

Ich habe GroßbuchstabenStringWithLocale nicht ausprobiert, also werde ich damit spielen und in ein paar Minuten zurückkommen. –

+1

Danke. Es stellte sich heraus, dass das schnelle Beispiel in Apples Dokumenten vertippt war, was mich (im übertragenen Sinne) zu einer Schleife brachte. –

3

Es wird ein für diese

in Funktion gebaut
nameOfString.capitalizedString 

Das wird jedes Wort von String-Kapital zu schlagen. Nutzen nur den ersten Buchstaben können Sie:

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

Older Thread

+0

Ich habe das versucht, und es hat nicht für mich funktioniert. Es schien nur das erste Wort zu begrenzen. Ich habe den Thread gefunden, der dies empfohlen hat. –

0

Hier ist, was ich dachte, scheint zu arbeiten, aber ich bin offen für alles, was besser ist.

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 
} 

oder wenn ich dies als eine Erweiterung der String-Klasse verwenden möchte.

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

Wieder ist alles besser willkommen.

8

Ein Beispiel für die oben angegebene Antwort.

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

End Ergebnis ist eine Zeichenfolge „Das ist ein Satz“

12

Seit iOS 9 eine lokalisierte Aktivierung Funktion als Großbuchstaben verfügbar ist, kann in den Sprachen unterscheiden.

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

Für Swift 3 es geändert capitalized wurde.

Discussion
Diese Eigenschaft führt die kanonische (nicht lokalisiert) Mapping. Es eignet sich für Programmiervorgänge, die stabile Ergebnisse unabhängig vom aktuellen Gebietsschema erfordern. Eine großgeschriebene Zeichenfolge ist eine Zeichenfolge, bei der das erste Zeichen in jedem Wort in den entsprechenden Großbuchstabe geändert wird und alle verbleibenden Zeichen auf die entsprechenden Kleinbuchstaben gesetzt werden. Ein "Wort" ist eine beliebige Folge von Zeichen, die durch Leerzeichen, Tabulatoren oder Zeilenabschlüsse begrenzt sind (aufgelistet unter getLineStart (_: end: contentsEnd: for :)). Einige gängige Interpunktionszeichen werden nicht berücksichtigt, daher kann diese Eigenschaft im Allgemeinen nicht die gewünschten Ergebnisse für Multiwort-Strings liefern. Transformationen von Gehäusen sind nicht garantiert symmetrisch oder erzeugen Saiten gleicher Länge wie die Originale. Ein Beispiel finden Sie unter Kleinbuchstaben.

6

Swift 3:

var lowercased = "hello there" 

var stringCapitalized = lowercased.capitalized 
//prints: "Hello There" 
Verwandte Themen