comment obtenir les trois premiers caractères d'une NSString?

104

Comment puis-je renvoyer les trois premiers caractères d'une NSString?

cgossain
la source

Réponses:

263
 mystr=[mystr substringToIndex:3];

Assurez-vous que votre chaîne a au moins 3 ch .. oe cela plantera l'application.

Voici quelques autres liens pour vérifier les opérations NSsting ...

Lien1

Lien2

Lien Apple

Jeu en cours de chargement
la source
21
Remarque: erreur "Plage ou index hors limites" possible si vous ne vérifiez pas la longueur pour vous assurer qu'elle contient 3 caractères ou plus
Ryan Bavetta
Je suis très nouveau et j'ai cherché cette question pour essayer de répondre à la mienne, mais cette réponse ne supprimera-t-elle pas les 3 premiers caractères? J'utilise cette même syntaxe pour SUPPRIMER le nombre de caractères que vous définissez. J'ai probablement tort, mais j'ai pensé que je devrais au moins demander.
@RyanBavetta Que faire si la chaîne avec laquelle vous faites cela est, par exemple, une chaîne de date que votre code a créée précédemment et que vous savez exactement combien de caractères il contient. Alors vous n'avez sûrement pas besoin de vous embêter avec une instruction if pour vérifier combien de temps il est, non ??
Supertecnoboff
1
@GameLoading J'ai ajouté du code à votre réponse afin qu'elle ne plante pas pour les débutants. J'espère que ça ne vous dérange pas :)
iYoung
Utilisez simplement mystr = [mystr substringToIndex: MIN (mystr.length, 3)] pour éviter les plantages :-)
LaborEtArs
62

Tout d'abord, vous devez vous assurer que la chaîne contient au moins 3 caractères:

NSString *fullString = /* obtain from somewhere */;
NSString *prefix = nil;

if ([fullString length] >= 3)
    prefix = [fullString substringToIndex:3];
else
    prefix = fullString;

substringToIndex: lèvera une exception si l'index que vous fournissez est au-delà de la fin de la chaîne.

dreamlax
la source
5
Ou encapsulez un bloc @ try / @ catch. Néanmoins, c'est une meilleure réponse que l'autre.
Alan Zeino
2

la bonne façon est:

text = [text substringToIndex:NSMaxRange([text rangeOfComposedCharacterSequenceAtIndex:2])];

substringToIndex de NSString est indexé par unité de code, emoji prend deux unités de code.

assurez-vous de vérifier l'index vous-même.

de pointe
la source