Objectif C – Supprimer le dernier caractère de la chaîne

En Objective C pour l’iPhone, comment supprimer le dernier caractère d’une chaîne à l’aide d’une action sur un bouton.

Dans votre classe de contrôleur, créez une méthode d’action à laquelle vous associez le bouton dans Interface Builder. Dans cette méthode, vous pouvez découper votre chaîne comme suit:

if ([ssortingng length] > 0) { ssortingng = [ssortingng subssortingngToIndex:[ssortingng length] - 1]; } else { //no characters to delete... attempting to do so will result in a crash } 


Si vous voulez une façon simple de le faire en une seule ligne de code, vous pouvez l’écrire comme suit:

 ssortingng = [ssortingng subssortingngToIndex:ssortingng.length-(ssortingng.length>0)]; 

* Explication de l’extrait de code de ligne simple:

S’il y a un caractère à supprimer (c’est-à-dire que la longueur de la chaîne est supérieure à 0)
(ssortingng.length>0) renvoie 1 ce qui fait que le code retourne:
ssortingng = [ssortingng subssortingngToIndex:ssortingng.length-1];

S’il n’y a PAS un caractère à supprimer (c’est-à-dire que la longueur de la chaîne n’est PAS supérieure à 0)
(ssortingng.length>0) renvoie 0 ce qui fait que le code retourne:
ssortingng = [ssortingng subssortingngToIndex:ssortingng.length-0];
Ce qui empêche les accidents.

Si c’est un NSMutableSsortingng (que je recommanderais car vous le modifiez dynamicment), vous pouvez utiliser:

 [mySsortingng deleteCharactersInRange:NSMakeRange([myRequestSsortingng length]-1, 1)]; 

Les solutions proposées ici ne prennent pas en compte les caractères Unicode multi-octets (“caractères composés”), et peuvent entraîner des chaînes Unicode invalides.

En fait, le fichier d’en-tête iOS qui contient la déclaration de subssortingngToIndex contient le commentaire suivant:

Conseil: à utiliser avec rangeOfComposedCharacterSequencesForRange: pour éviter de casser des caractères composés

Voir comment utiliser rangeOfComposedCharacterSequenceAtIndex: pour supprimer le dernier caractère correctement.

La documentation est votre ami, NSSsortingng prend en charge un appel subssortingngWithRange qui peut raccourcir la chaîne à laquelle vous avez renvoyé la chaîne raccourcie. Vous ne pouvez pas modifier une instance de NSSsortingng immuable. Si vous avez un NSMutableSsortingng a une méthode appelée deleteCharactersInRange qui peut modifier la chaîne en place

 ... NSRange r; r.location = 0; r.size = [mutable length]-1; NSSsortingng* shorted = [ssortingngValue subssortingngWithRange:r]; ...