Dans Objective-C pour iOS, comment supprimer le dernier caractère d'une chaîne à l'aide d'une action de bouton?
Dans Objective-C pour iOS, comment supprimer le dernier caractère d'une chaîne à l'aide d'une action de bouton?
Dans votre classe de contrôleur, créez une méthode d'action à laquelle vous accrocherez le bouton dans Interface Builder. À l'intérieur de cette méthode, vous pouvez couper votre chaîne comme ceci:
if ([string length] > 0) {
string = [string substringToIndex:[string length] - 1];
} else {
//no characters to delete... attempting to do so will result in a crash
}
Si vous voulez une façon sophistiquée de le faire en une seule ligne de code, vous pouvez l'écrire comme suit:
string = [string substringToIndex:string.length-(string.length>0)];
* Explication de l'extrait de code fantaisie sur une ligne:
S'il y a un caractère à supprimer (c'est-à-dire que la longueur de la chaîne est supérieure à 0), le
(string.length>0)
retour 1
du code est renvoyé:
string = [string substringToIndex:string.length-1];
S'il n'y a PAS de caractère à supprimer (c'est-à-dire la longueur du string n'est PAS supérieur à 0)
(string.length>0)
renvoie 0
donc le code retour:
string = [string substringToIndex:string.length-0];
ce qui évite les plantages.
string != nil && [string length] > 0
. Il y a de fortes chances que la variable chaîne de Donal soit trop libérée.S'il s'agit d'un NSMutableString (que je recommanderais car vous le modifiez dynamiquement), vous pouvez utiliser:
la source
Les solutions donné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
substringToIndex
contient le commentaire suivant:Découvrez comment utiliser
rangeOfComposedCharacterSequenceAtIndex:
pour supprimer correctement le dernier caractère.la source
La documentation est votre ami,
NSString
prend en charge un appelsubstringWithRange
qui peut raccourcir la chaîne que vous avez un retour de la chaîne raccourcie. Vous ne pouvez pas modifier une instance deNSString
celui-ci est immuable. Si vous avez unNSMutableString
est a une méthode appeléedeleteCharactersInRange
qui peut modifier la chaîne en placela source
substringWithRange:
renvoie unNSString*
. Prenez note du pointeur.