154 votes

Objective C - supprimer le dernier caractère de la chaîne

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

424voto

Marc Charbonneau Points 30464

Dans votre contrôleur de classe, de créer une méthode d'action vous permettra d'accrocher le bouton jusqu'à dans Interface Builder. À l'intérieur de cette méthode, vous pouvez dé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 élégante de le faire en une seule ligne de code, vous pouvez l'écrire comme:

string = [string substringToIndex:string.length-(string.length>0)];

*Explication de la fantaisie d'une ligne de code suivante:

Si il y a un caractère à supprimer (c'est à dire la longueur de la chaîne est supérieure à 0)
     (string.length>0) retours 1 rendant ainsi le code de retour:
          string = [string substringToIndex:string.length-1];

Si il n'est PAS d'un caractère à supprimer (c'est à dire la longueur de la chaîne n'est PAS plus grand que 0)
     (string.length>0) retours 0 rendant ainsi le code de retour:
          string = [string substringToIndex:string.length-0];
Ce qui empêche les accidents.

54voto

Dave DeLong Points 156978

Si c’est un NSMutableString (dont je recommande puisque vous êtes changer dynamiquement), vous pouvez utiliser :

8voto

user1071136 Points 7601

Les solutions données ici ne tiennent pas compte de la multi-octets caractères Unicode ("composé de caractères"), et pourrait entraîner la non valide chaînes Unicode.

En effet, l'iOS fichier d'en-tête qui contient la déclaration de substringToIndex contient le commentaire suivant:

Astuce: Utiliser avec rangeOfComposedCharacterSequencesforrange: pour éviter de casser composé de caractères

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

6voto

Harald Scheirich Points 7227

La documentation est votre ami, prend en charge un appel qui peut raccourcir la chaîne que vous avez un retour de la chaîne raccourcie. Vous ne pouvez pas modifier une instance de elle est immuable. Si vous avez un est possède une méthode appelée `` qui peuvent modifier la chaîne en place

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X