J'essaie de créer un système de correction automatique et lorsqu'un utilisateur tape un mot avec une majuscule, la correction automatique ne fonctionne pas. Afin de résoudre ce problème, j'ai fait une copie de la chaîne tapée, appliqué .lowercaseString, puis les ai comparés. Si la chaîne est en effet mal tapée, elle devrait corriger le mot. Cependant, le mot qui remplace le mot tapé est tout en minuscules. Je dois donc appliquer .uppercaseString à la première lettre uniquement. Au départ, je pensais pouvoir utiliser
nameOfString[0]
mais cela ne fonctionne apparemment pas. Comment puis-je obtenir la première lettre de la chaîne en majuscules, puis être en mesure d'imprimer la chaîne complète avec la première lettre en majuscule?
Merci pour toute aide!
la source
.capitalizedString
ne fonctionne plus dans Xcode 7 Beta 4. Les chaînes ont un peu changé dans Swift 2.0.Foundation
sourire penaud.uppercaseString
for that.capitalized
maintenant. Remarque égalementcapitalizedStringWith(_ locale:)
Swift 5.1 ou version ultérieure
Swift 5
la source
UITextField
observateurUITextFieldTextDidChangeNotification
.pour "Hello World"
ou pour "BONJOUR MONDE"
la source
Swift 4.0
ou
Cependant, cela met en majuscule la première lettre de chaque mot
Documentation d'Apple:
la source
Pour Swift 5:
la source
isEmpty
et d'initialiser une chaîne à remplacer. Vous pouvez simplement déballer le premier caractère et en cas d'échec, renvoyez simplement zéro. Cela peut être simplifié commevar firstCharacterUpperCase: String? { guard let first = first else { return nil } return lowercased().replacingCharacters(in: startIndex...startIndex, with: first.uppercased()) }
Pour le premier caractère du mot à utiliser
.capitalized
rapidement et pour le mot entier.uppercased()
la source
Swift 2.0 (une seule ligne):
la source
.localizedLowercaseString
à la fin pour le faire fonctionner avec des chaînes comme: aNYsTring.String(nameOfString.characters.prefix(1)).uppercaseString + String(nameOfString.characters.dropFirst()).localizedLowercaseString
Swift 3 (xcode 8.3.3)
Majuscules tous les premiers caractères de la chaîne
Majuscules tous les caractères
Majuscule uniquement le premier caractère de la chaîne
la source
En rapide 5
https://www.hackingwithswift.com/example-code/strings/how-to-capitalize-the-first-letter-of-a-string
utiliser avec votre chaîne
la source
J'obtiens le premier caractère dupliqué avec la solution de Kirsteins. Cela mettra en majuscule le premier caractère, sans voir double:
Je ne sais pas si c'est plus ou moins efficace, je sais juste que ça me donne le résultat souhaité.
la source
countElements
c'est justecount
.Depuis Swift 3, vous pouvez facilement utiliser
textField.autocapitalizationType = UITextAutocapitalizationType.sentences
la source
Voici une version pour Swift 5 qui utilise l' API des propriétés scalaires Unicode pour renflouer si la première lettre est déjà en majuscule ou n'a pas de notion de casse:
la source
return first.uppercased() + dropFirst()
ou un paquebot(first?.uppercased() ?? "") + dropFirst()
Mettre en majuscule le premier caractère de la chaîne
la source
Dans Swift 3.0 (c'est un peu plus rapide et plus sûr que la réponse acceptée):
nameOfString.capitalized ne fonctionnera pas , il mettra en majuscule tous les mots de la phrase
la source
Crédits à Leonardo Savio Dabus:
J'imagine que la plupart des cas d'utilisation consistent à obtenir un boîtier approprié:
la source
Ma solution:
la source
En incorporant les réponses ci-dessus, j'ai écrit une petite extension qui met en majuscule la première lettre de chaque mot (parce que c'est ce que je cherchais et j'ai pensé que quelqu'un d'autre pourrait l'utiliser).
Je soumets humblement:
la source
Swift 4
la source
Voici la façon dont je l'ai fait par petites étapes, c'est similaire à @Kirsteins.
la source
Fonctionne également, passez simplement votre chaîne et récupérez-en une en majuscule.
la source
Mise à jour Swift 3
Le
replaceRange
func est maintenantreplaceSubrange
la source
Je suis partial pour cette version, qui est une version nettoyée d'une autre réponse:
Il s'efforce d'être plus efficace en n'évaluant les self.characters qu'une seule fois, puis utilise des formulaires cohérents pour créer les sous-chaînes.
la source
Swift 4 (Xcode 9.1)
la source
capitalized
exactement à cet effetSi vous souhaitez mettre en majuscule chaque mot de chaîne, vous pouvez utiliser cette extension
Swift 4 Xcode 9.2
Utilisé
la source
.capitalized
Si votre chaîne est entièrement en majuscules, la méthode ci-dessous fonctionnera
Cette extension vous aidera
la source
.capitalized
.capitalized
retournera (Ceci est un garçon) et cette méthode retournera (Ceci est un garçon) Les deux sont différents. (Veuillez faire un vote positif ou supprimer le négatif)return first.uppercased() + dropFirst()
ou un retour de ligne(first?.uppercased() ?? "") + dropFirst()
Ajoutez cette ligne dans la méthode viewDidLoad ().
la source
la source
Pour swift 5, vous pouvez simplement faire comme ça:
Exemple: "abc" -> "Abc"
la source