Comment mettre en majuscule le premier mot de la phrase en Objective-C?
J'ai déjà trouvé comment capitaliser tous les mots de la phrase, mais pas le premier mot seulement.
NSString *txt =@"hi my friends!"
[txt capitalizedString];
Je ne veux pas changer de minuscules et de mettre en majuscule le premier caractère. J'aimerais mettre en majuscule le premier mot seulement, sans changer les autres.
Vous devez vous connecter pour publier un commentaire.
Voici un autre aller à elle:
Pour Swift langue:
if ([txt length] > 0)
. Il fonctionne très bien si la longueur est de 1.Accepté la réponse est fausse. Tout d'abord, il n'est pas correct de traiter les unités de
NSString
comme "caractères" dans le sens que l'utilisateur attend. Il y a des paires de substitution. Il existe en combinant les séquences. Le fractionnement de ceux qui vont produire des résultats incorrects. Deuxièmement, il n'est pas nécessairement le cas que uppercasing le premier caractère de produit le même résultat que la capitalisation d'un mot contenant ce caractère. Les langues peuvent être sensibles au contexte.La bonne façon de le faire est de mettre les cadres à identifier les mots (et, éventuellement, des phrases) dans les paramètres régionaux de façon appropriée. Et aussi de capitaliser dans les paramètres régionaux de façon appropriée.
Il est possible que le premier mot d'une chaîne de caractères n'est pas le même que le premier mot de la première phrase d'une chaîne. Pour identifier la première (ou chaque phrase de la chaîne, puis de mettre en majuscule le premier mot de cette (ou ces), puis surround ci-dessus à l'extérieur de l'invocation de la
-enumerateSubstringsInRange:options:usingBlock:
à l'aide deNSStringEnumerationBySentences | NSStringEnumerationLocalized
. À l'intérieur de l'invocation, de passer lasubstringRange
fourni par l'extérieur invocation que l'argument de plage.*stop = enclosingRange.location + enclosingRange.length == self.length;
-capitalizedStringWithLocale:
. Même si vous ne souhaitez énumérer tous les mots, la façon de le faire est de simplement jamais mis les*stop
. L'énumération va naturellement se terminer à la fin de la chaîne. (En général dans le Cacao, l'énumération-avec-bloc méthodes, vous ne devriez jamais mettre*stop
sauf si vous êtes à la valeur true. C'est surtout important en simultané les énumérations, mais c'est dans le contrat de conception pour tous les cas.)Utilisation
et mettre en majuscule le premier objet du tableau et ensuite utiliser
joindre
vous pouvez l'utilisateur avec une expression régulière, j'ai fait ça fonctionne pour moi est simple, vous pouvez coller le code ci-dessous
+(NSString*)CaptializeFirstCharacterOfSentence:(NSString*)phrase{
}
//Appel de cette méthode
NsString *resultSentence = [UserClass CaptializeFirstCharacterOfSentence:yourTexthere];
Pour le plaisir d'avoir des options, je vous suggère de:
Je suis au travail et ne pas avoir mon Mac pour tester cela, mais si je me souviens bien, vous ne pouviez pas utiliser
[myString cStringUsingEncoding:NSUTF8StringEncoding]
parce qu'elle renvoie unconst char *
.Dans swift, vous pouvez le faire aussi suivie à l'aide de cette extension:
l'appel de votre chaîne comme ceci:
Une solution alternative à Swift:
Je sais que la question porte spécifiquement pour un Objectif C réponse, cependant voici une solution pour Swift 2.0:
Ou comme une extension: