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]; ...